1.ProjectSettings中设置actionMapping。action可以设置为那种那一次执行一次的一次性动作。
蓝图
找到Action Events事件下的Jump
连接character类自带的跳跃函数
C++
由于jump已经存在,我们直接进行绑定。
和之前移动相比需要设置按压还是释放事件,jumo存在于ACharacter下仅此而已。
2.增加跳跃动画 。
通过movement组件的IsFalling函数来进行状态更改。
C++
新建一个变量
设置值
3.状态机修改
首先状态机可以声明多个,因此避免状态机的复杂,我们可以将之前的状态机值保存到cache,可以在新的状态节点中使用。
最后状态机构造成这样
设置转换逻辑,地面转转换到InAir,只需要判断IsFalling,InAir绑定降落动画,设置只播放一遍
取消勾选,如果快速按跳需要动画正常需要勾选。
下坠到落地姿势设置not IsFalling。
降落姿势到之前设置的地面姿势,由于降落姿势动画很长,我们可以在设置自动播放的前提下加上更多限制条件。只需要在拖动一次Land节点到OnGround上,只有一个条件时自动播放,有一个不是,我们在去设置没有自动播放那个条件。
我们可以设置到动画播到一定时间自动切换
通过getRelevent anim time获取动画播放了多久,然后设置限制,由于我们还是需要动画播放一定时长的因此我们用and。
个人认为将自动播放那个也改为动画时间限制,这里可以让动画长一点点。