p=60 Counter’s attack Window (部分弹反功能) ,类恶魔城Demo学习

p=60 Counter’s attack Window ,类恶魔城Demo学习

p59添加了对怪物昏迷功能,这次p60加上弹反功能(部分)
注:只实现了玩家成功弹反后,怪物的判断。玩家弹反输入暂时还没做

新加功能:弹反窗口

思路:新加判断变量和辅助图形,当窗口内检测到时既触发弹反。在动画内插入触发器方法,用动画触发器控制是否在窗口内。

EnimyTrigger脚本新加代码:
    private void OpenCountWindow() => enemy.OpenCounterAttackWindow();
    private void CloseCountWindow() => enemy.CloseCounterAttackWindow();
Enemy脚本新加代码:
    protected bool canBeStuned;                             //是否能够昏迷
    [SerializeField] protected GameObject counterImage;    //显示是否在窗口的展示图形
    
    //是否在弹反窗口
    public virtual void OpenCounterAttackWindow()
    {
        canBeStuned = true;
        counterImage.SetActive(true);
    }
    public virtual void CloseCounterAttackWindow()
    {
        canBeStuned = false;
        counterImage.SetActive(false);
    }


    public virtual bool CanBeStuned()
{
    if (canBeStuned)
    {
        counterImage.SetActive(false);
        return true;
    }
    return false;
}

Enemy_Skeleton脚本新加代码(重写继承的CanBeStuned方法):
    protected override void Update()
    {
        base.Update();
        if (Input.GetKeyDown(KeyCode.U))
        {
            stateMachine.ChangeState(stunState);
        }

        //CanBeStuned();   可自己测试用,这个方法是玩家弹反时调用的,看是否可弹反
    }
    public override bool CanBeStuned()
    {
        if (base.CanBeStuned())
        {
            //弹反成功肯定跳去stunState
            stateMachine.ChangeState(stunState);
            return true;
        }
        return false;
    }
### 恶魔城游戏的源代码获取 恶魔城游戏通常指的是具有横版卷轴、探索性强以及高难度战斗的游戏风格。如果希望找到似的开源项目或者学习如何开发这样的游戏,可以考虑以下几个方面: #### 开源项目的查找方式 可以通过一些知名的代码托管平台来寻找恶魔城游戏的开源实现。GitHub 是目前最常用的代码托管服务之一,在其中搜索关键词如 `Metroidvania` 或者 `Castlevania-like game` 可能会发现许多有价值的资源[^1]。 对于具体下载地址,由于网络环境变化频繁,建议直接访问 GitHub 并输入上述关键字进行检索。例如,“Metroidvania Game Engine” 就是一个基于 Godot 游戏引擎构建的例子[^2]。 另外还有 itch.io 这样的独立开发者社区也经常分享完整的项目文件供爱好者研究学习[^3]。 #### 使用特定框架简化开发过程 除了现成的完整作品外,还可以利用某些专为制作此游戏设计的技术栈来自行搭建原型。比如 Unity 和 Unreal Engine 都提供了丰富的插件支持;而像 Godot 则因为其轻量级特性和内置脚本语言 GDScript 更适合初学者快速上手创建简单的 Metroidvania 型产品[^4]。 下面展示一段基本的角色移动逻辑作为参考: ```csharp // C# Example for Unity using UnityEngine; public class PlayerMovement : MonoBehaviour { public float speed = 5f; void Update() { float moveHorizontal = Input.GetAxis("Horizontal"); Vector3 movement = new Vector3(moveHorizontal, 0.0f, 0.0f); transform.position += movement * Time.deltaTime * speed; } } ``` 请注意以上仅为演示目的编写的小片段,并未包含碰撞检测等功能模块[^5]。 #### 法律与版权注意事项 无论从何处获得代码素材,请务必确认该软件许可协议允许二次分发或商业用途等活动之前就擅自行动可能导致侵权风险【^6】。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值