有时,动画表现为“原地就位”,这意味着如果您将此动画放入场景,它不会移动所依附的角色。换言之,该动画没有包含“根运动”。为此,我们可通过脚本修改根运动。为了将这一切融合到一起,请遵循以下步骤(注意,实现相同结果有很多不同方法,这只是一种方案)。
最后,要控制运动,我们需要创建脚本 (RootMotionScript.cs) 来实现 OnAnimatorMove 回调:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Animator))]
public class RootMotionScript : MonoBehaviour {
void OnAnimatorMove()
{
Animator animator = GetComponent<Animator>();
if (animator)
{
Vector3 newPosition = transform.position;
newPosition.z += animator.GetFloat("Runspeed") * Time.deltaTime;
transform.position = newPosition;
}
}
}
应将 RootMotionScript.cs 连接到“Dude”对象。进行此操作时,Animator 组件将检测到脚本有 OnAnimatorMove 函数并将 Apply Root Motion 属性显示为 Handled by Script