已知_animator.applyRootMotion ==true;的时候,动画位移也会算在位移里面。
但有些时候位移动作太大,这时候就需要调整了。
调整办法如下:
cs
/// <summary>
/// 自定义根运动的核心回调函数
/// </summary>
void OnAnimatorMove()
{
var animator = AIBasicBehavior.Animator;
// 1. 获取动画计算出的根运动增量(位移+旋转)
Vector3 deltaPosition = animator.deltaPosition; // 本帧根运动的位移增量(世界坐标系)
Quaternion deltaRotation = animator.deltaRotation; // 本帧根运动的旋转增量
// 2. 缩放位移(仅缩放位移,旋转保持不变)
deltaPosition *= 0.55f;
// 关键修复:指定Translate使用世界坐标系(Space.World),匹配deltaPosition的坐标系
transform.Translate(deltaPosition, Space.World);
transform.rotation *= deltaRotation;
}