有时你的动画是“原地”动画,这意味着如果你将其放置在场景场景包含游戏中的环境和菜单。可以将每个唯一的场景文件视为一个唯一的关卡。在每个场景中,你放置环境、障碍物和装饰物,从本质上讲,就是分块设计和构建你的游戏。 更多信息
参见 术语表中,它不会移动其所在的角色。换句话说,动画不包含“根运动角色根节点的运动,无论是由动画本身还是外部控制。 更多信息
参见 术语表”。为此,我们可以通过脚本修改根运动。为了将所有内容整合在一起,请按照以下步骤操作(请注意,实现相同结果的方法有很多种,这只是一个示例)。
最后,为了控制运动,我们需要创建一个脚本(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 组件模型上的一个组件,使用动画系统对该模型进行动画处理。该组件引用一个控制动画的 Animator Controller 资源。 更多信息
参见 术语表将检测到该脚本具有OnAnimatorMove 函数,并将“应用根运动”属性显示为“由脚本处理”