本案例预制 Unity 场景有一个带有空闲动画的播放器,运行功能其实可以随时使用,通过制作一个脚本来管理从 Mixamo 下载的角色运行动画和空闲的过渡。

首先,访问了 Mixamo 网站并下载一个运行动画,角色模型可以换成你自己喜欢的就行。

将下载下来的资产保存在项目中,选择包并将绑定动画类型设置为人形(Humanoid),并在包中复制运行动画。

然后选择动画并检查循环时间(Loop Time)选项。

在播放器动画控制器中,添加运行动画,创建了一个名为 speed 的浮点参数并创建了 2 个过渡。从怠速变为运行的条件是,如果速度大于 0.1 则变为运行,如果小于 0.1 则变为怠速。

接着创建一个名为播放器动画的新脚本并将其添加到播放器中,以便控制俩者的过渡。
在脚本中,有一个变量来保存对 _animator 控制器组件的引用,在 start 方法中使用函数 GetComponentInChildren() 对其进行初始化。
在更新方法中,得到了水平轴,将这个轴的绝对值设置为动画器中的参数速度。然后根据方向翻转角色,只需检查水平轴是否不同于 0,如果是,更改玩家的 transform.localScale 中的 z 值。
public class PlayerAnimation : MonoBehaviour
{
private Animator _anim;
// 在第一次帧更新之前开始调用
void Start()
{
_anim = GetComponentInChildren<Animator>();
}
// 每帧调用一次更新
void Update()
{
// 获取水平输入的绝对值
float h = Input. GetAxisRaw("Horizontal");
_anim. SetFloat("Speed",Mathf.Abs( h));
// 翻转角色
if (h != 0)
{
transform.localScale = new Vector3(3,3,h*3);
}
}
}
到这里就已经制作完成了,可在 Unity 播放器中运行动画进行测试该角色。
