动画片段
做成动画片段,命名为 blueCrouchStart 和 blueCrouchIdle
动画状态机
这里我们再接触一个新的东西,Sub-State Machine,可以通过右键 Create Sub-State Machine 来实现
点开 Crouch ,把之前创建好的 blueCrouchStart 和 blueCrouchIdle 片段加进来
另外添加一个变量,isCrouch
当 isCrouch 为 true 的时候,从 blueIdle 切换到 Crouch
当 blueCrouchStart 完整播放完一帧之后,从 blueCrouchStart 切换到 blueCrouchIdle
当 isCrouch 为 false 的时候,从 blueCrouchIdle 切换到 Exit
代码控制动画状态机
首先我们需要获取下蹲的按钮是否按下,下蹲监听的是键盘的下键,所以我们只需要判断 inputDirection.y 是否 < -0.5f 就行了
然后在 PlayerAnimation 里面获取 isCrouch 并设置到动画状态机里面
下蹲时修改碰撞体大小
PlayerController 在第一次执行的时候,要获取原始碰撞体,以及碰撞体的大小和偏移
然后在下蹲的时候,修改大小和偏移。在取消下蹲的时候,还原大小和偏移
禁用下蹲时移动
在修改速度前,判断一下当前是否是下蹲状态。如果不是下蹲状态,才能进行修改速度(也就是才能够移动)
项目相关代码
代码仓库:https://gitee.com/nbda1121440/2DAdventure.git
标签:动画,逻辑,人物,isCrouch,状态机,blueCrouchStart,偏移,blueCrouchIdle From: https://www.cnblogs.com/hellozjf/p/18030947