Unreal官方给了一个介绍:https://docs.unrealengine.com/latest/INT/Engine/Animation/RootMotion/index.html
其实要点就是:
1. 将带有RootMotion的Anim Clip,制作为Montage,注意Montage的RootMotion下的Enable Root Motion Translation和Enable Root Motion Rotation需要勾选上。
2. 在CharacterBP中用PlayAnimMontage Node调用步骤1里制作的Montage;
仅仅在CharacterBlueprint里调用:
或者Montage的调用也可以在AnimationBlueprint里做。
当然,必须要在CharacterBP里调用AnimationBP里自定义的Event:
无论如何,调用Montage,必须要反映到AnimationBlueprint里AnimGraph里的FinalAnimationPose。
Fullbody是Slot节点,Fullbody是所用的Montage的Slot名称:
只要注意保证Slot Node的Slot Name和Montage一致,并传递给Final Animation Pos,那么就可以在CharacterBP、AnimationBP里随意调用该Slot对应的Montage了。
3. 正确使用UE的RootMotion,对动画资源有一定的要求,要求root在原点,在地上。而我接触的很多动画资源,root为Bip01,接近于腰处,不在原点,导致使用UE的RootMontion达不到想要的效果,动画会变形,且整个场景进入Play模式后动画没有位移。
缺陷
UE4里目前对RootMotion的处理,都需要将AnimSequence弄为AnimMontage,一个很大的弊病是,AnimMontage不支持BlendSpace... 另外,在StateMachine中只能用AnimSequence,用不了AnimMontage。 这些都严重限制了带有RootMotion的动画的使用。
据说Unreal后续会改进RootMotion,期待之。