本节使用 Animation Layer Interface 优化状态机
创建ALI_LocomotionLayers
创建如下状态, 接口思想,子类可以根据范式有不同实现。
动画蓝图基类实现接口
ABP_Base 实现 ALI_LocomotionLayers后,左侧动画层会出现定义的状态
使用动画层替换原逻辑, idle 和 cycle
创建新的动画蓝图 ABP_LocomotionLayers
同样的实现 ALI_LocomotionLayers 动画层接口。
新建结构体 F_DirectionAnims 用于配置动画序列
1 | F Anim Sequence |
新建函数GetMainAnimBP 用于获取动画蓝图基类中的数据
Cycle 状态
复制之前基类中的代码
绑定的 Update 函数需要重写, 总体一样的。
创建CycleAnimations TMap 用于配置动画, 使用GetMainAnimBP获取参数进行动画组合。
Idle 状态
同样,将序列改为动态,并绑定Update函数
创建IdleAnimation属性,设置Idle的动画序列。
拓展
右键 ABP_LocomotionLayers 创建子类 ABP_LocomotionLayers_Unarmed 在类默认值中覆盖动画序列
如果有其他状态,如持不同武器,继承后覆盖动画即可。
Link Layer
现在需要指定具体使用哪个动画层。在角色Mesh上使用方法 Link Anim Class Layers