人物输入响应
- 首先在project setting界面对输入进行绑定
- 这里直接手搓了状态机,所以将左右移动的映射值设置为-1与1
- 由于左右移动是持续输入,所以应该在Axis mapping下绑定
- 跳跃等单次输入,就可以绑定在Action mapping下
- 人物左右移动实现
- 首先获得对应的键盘输入事件
- 获取Controller的旋转,根据旋转获得向前的向量
- 调用Add Movement Input事件,传入向前的方向与输入的值
图中其他的方法都是用于处理动画的
- 人物跳跃实现
- 获得对应的键盘输入事件
- 调用自带的Character Movement组件,并调用组件中的Is Falling方法,判断是否可以起跳
- 如果可以起跳,就执行Character自带的Jump方法
- 动画切换实现
- 动画切换主逻辑编写在左右移动输入后
- 这里使用了枚举类型,用来定义动画状态
-
创建一个该枚举类型的变量Movement State,用于保存当前状态
-
对于左右移动动画切换
- 根据输入映射的值判定,由于在项目设置中已经规定了向右为1,左为-1;所以可以使用多个Branch判定
-
对于跳跃动画的切换
- Is Falling方法可判断玩家是否在空中
- 然后可以获取玩家的速度向量,使用Get Velocity方法,然后判断竖直方向速度,为正是在跳跃,为负是在下落
-
当玩家既没有在空中,又没有在左右移动,就切换为空闲动画
-
切换动画可以用枚举变量配合Switch方法,调用Set Flibpook
评论区