学习做动画3.八方移动
1.打开ABP_CharacterBase,创建一个新函数命名为UpdateCardinalDirectionFromVelocity(由速度更新方向)
接着呢我们需要由这个计算出的方向来设置前进的方向的枚举。
先创建枚举
再创建一个函数,命名为SelectCardinalDirectionFromAngle,用来设置方向
先勾选上
纯函数的输入输出
设置三个局部变量
再进行判断
再回到UpdateCardinalDirectionFromVelocity,我们就可以设置方向了
同时要在线程安全上使用
2。现在我们有了角色当前前进的方向,接下来需要设置对应方向的动画逻辑
我们先新建一个结构用来代表四个方向的动画
我们需要进行方向适配的有三个动画层,Stop、Cycle、Start
在Start内,我们只需要在绑定的函数“变为相关时”进行方向的判断。其中,执行“变为相关时”的函数仅在进入这个状态时执行一次,而“更新时”则是每帧都执行
我们先从Start开始。打开SetupStartAnim(),我们进行这样的操作。通过propertyaccess节点或取到当前的枚举,然后通过枚举来设置动画序列。
然后我们回到Start这里,将序列设为动态值
然后是Cycle,一样的操作,将序列设为动态值。
然后进入到UpdateCycleAnim,同样需要新建一个变量
接着到Stop
然后进入SetUpStopAnim
此时可以把之前设置的三个序列删除了
3。我们在ABP_LayerBase内设置好后,打开其子类,可以发现我们可以分别设置他们的动画了
进行设置就好
我们需要进入到Start与Cycle的动画里进行设置步数匹配
(就是这个)
接下来呢,我们回到LayerBase内,打开Start部分,我们需要为Start与Cycle添加一个朝向扭曲
对Cycle也是一样的操作。
然后打开玩家蓝图
此时启动项目,角色八方移动时,下半身都能朝向移动的方向。