LocomotionSystem Reproduction 6 Animation Layer Interface

本节使用 Animation Layer Interface 优化状态机

创建ALI_LocomotionLayers

创建如下状态, 接口思想,子类可以根据范式有不同实现。

动画蓝图基类实现接口

ABP_Base 实现 ALI_LocomotionLayers后,左侧动画层会出现定义的状态

使用动画层替换原逻辑, idle 和 cycle

创建新的动画蓝图 ABP_LocomotionLayers

同样的实现 ALI_LocomotionLayers 动画层接口。

新建结构体 F_DirectionAnims 用于配置动画序列

1
2
3
4
F Anim Sequence
B Anim Sequence
R Anim Sequence
L Anim Sequence

新建函数GetMainAnimBP 用于获取动画蓝图基类中的数据

Cycle 状态

复制之前基类中的代码

绑定的 Update 函数需要重写, 总体一样的。

创建CycleAnimations TMap 用于配置动画, 使用GetMainAnimBP获取参数进行动画组合。

Idle 状态

同样,将序列改为动态,并绑定Update函数

创建IdleAnimation属性,设置Idle的动画序列。

拓展

右键 ABP_LocomotionLayers 创建子类 ABP_LocomotionLayers_Unarmed 在类默认值中覆盖动画序列

如果有其他状态,如持不同武器,继承后覆盖动画即可。

现在需要指定具体使用哪个动画层。在角色Mesh上使用方法 Link Anim Class Layers