Unity Animator -- Apply Root Motion

Animator.ApplyRootMotion

这个属性是用来控制物体在播放骨骼动画的时候是否应用骨骼根节点的运动参数。

一、当没有骨骼根节点的情况时,比如只是一个Cube立方体,如果勾选了ApplyRootMotion,运行后不会播放动画,因为应用了骨骼根节点的运动参数,而没有骨骼根节点,就没有动画了。即便是在代码中强行调用Animator.Play("rotation")方法也不会播放动画。

二、当有骨骼根节点的情况时,一旦设置了这个变量为true,那么请一定注意,这个会对物理引擎在模拟对象的运动轨迹时产生直接的影响,例如在某个动画A中,对象只向Y轴方向进行了移动,在X和Z轴是静止的,那么我们在播放A动画的时候,如果使用Rigidbody设置速度或者施加外力,还是不会让物体在X和Z轴上发生位移的。这是因为,在整个动画播放的过程中(例如0.5秒),Animator会根据动画中物体的位移信息对物体的速度进行赋值,这样达到使用骨骼根节点的位移的效果,也就是说,我在播放动画过程中的任意时间给物体设置了X或者Z轴方向上的运动速度,后续的动画播放帧中,速度又会被Animator强制赋值为跟动画文件中的位移信息一致。

猜你喜欢

转载自blog.csdn.net/qq826364410/article/details/80463080