2-9. 实现人物下蹲逻辑和动画

动画片段

做成动画片段,命名为 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

标签:20240224_1216

posted @ 2024-02-24 12:29  hellozjf  阅读(94)  评论(0)    收藏  举报