已大逃杀类型射击游戏为例,拿一种武器角色动画树搭建思路分析:
1.按照物理状态分为:地上(Walking蹲和站)、地上(卧趴着,需要修改碰撞盒计算)、水里(Swimming游泳)、开车等四类基础类(每类动画可以使用BendSpace组合成,如不同方向和速度走路动画通过BendSpace组合成一个动画空间),分别在角色动画蓝图上创建四个状态机,通过逻辑判断切换状态机,可以使用BlendPosesBool或者枚举的BlendPoses等输出到动画帧缓存CachedBase(UE4提供动画帧缓存节点CachedPose用来保存当前输出动画帧状态,进而使用其节点和其他输出帧缓存进行动画混合)
2.按照身体,还可以分为上下半身动画,使用上半身动画(如开枪动画)融合到步骤1基础动画类动画上,上半身动画全部修改蒙太奇动画,在蒙太奇设置添加分组分槽(可以分组Group,然后分组Group继续分槽Slot,暂时分为全身FullBody(全身动画如死亡动画,不要融合那种全身播放动画)和下半身Upper两种),动画蓝图上可以使用Slot节点设置引用那种Group的哪个Slot,播放蒙太奇动画时候,就可以通过Slot节点获取当前动画进而输出和其他动画融合。CachedBase输出进入上半身Slot(Upper)节点得到动画帧缓存CachedUpper
3.因为开枪瞄准可根据视觉朝向操作上半身两只手臂膀进行上下左右瞄准,九方向瞄准动画AimOffset,把九个上半身瞄准动画设置到AimOffset,输出到动画帧缓存CachedPose保存着和其他动画融合。CachedUpper输出进入AimOffset节点得到动画帧缓存CachedUpperAim
4.最后进行上半身融到基础动画上。通过LayeredBlendPerBone(属性栏添加过滤下半身骨骼,意思就是上半身融合时候不影响下半身动画)的BasePose输入连接CachedBase,其节点添加BlendPose输入然后连接CachedUpperAim,然后输出;这时已经把上半身瞄准动画、开火动画融合到基础动画上输出;这时输出到动画帧缓存CachedBlend
5.CachedBlend此后没有混合,可以直接进入Slot(FullBody)节点,最后输出到FinalAnimationPose结束。假如基础动画不需要融合上半身(如水里Swimming游泳状态机动画帧缓存CachedSwimmingBase),CachedBlend和CachedSwimmingBase可以使用BlendPosesBool判断在输出到Slot(FullBody)节点,然后输出到FinalAnimationPose结束。
步骤1、2、3、4、5结束了拿一种武器色动画树搭建思路分析,假如有不同武器,很简单,根据武器设置武器枚举类型;通过枚举的BlendPoses输入相应枚举的不同武器的动画得到当前武器类动画帧缓存,结合以上一种武器类动画搭建思路步骤。最终完美实现复杂动画树搭建融合。