给人物创建Animator动画组件
在素材库新建Animation文件夹
专门存动画相关的文件
Animation文件夹中创建Player文件夹
右击Player文件夹,创建Animator Controller
将新建的Animator Controller赋予人物中Animator组件中的Controller
选择Window,选择Animation,打开Animator窗口
选中Player人物,然后选择Window,选择Animation,再选择子菜单的Animation
在下方Animation窗口中,选择左侧的Clip,选择Create new Clip
选择好文件夹后,重命名为BlueIdle,为蓝色衣服小人静止时的动画。其他动画,以此类推。
一、人物静止动画
选择好小人的静止动画,拖入Animation时间轴窗口中
如果动画速度过快,则调整Samples
数值,数值越大,播放速率越快
二、人物跑步动画
选择好小人的跑步动画,拖入到新建立的跑步动画Clip中
由于跑步动画是需要触发才开始执行的,所以在Animator窗口中,新建一个X轴加值的变量velocityX
将跑步动画和静止动画相连接
在Animator主窗口中,可以看到BlueIdle和Run的动画方块。BlueIdle动画是可以转换到Run动画,Run动画也可以转换到BlueIdle动画。因此,将它们互相连接。右击方块,选择Make Transition
即可。
点击箭头,在右侧可以选择关闭Has Exit Time
(退出时间),Fixed Duration
和 Transition Duration
(过渡动画)
对动画过渡进行编程
在素材库,在Scripts→Player中,新建一个Animation C#脚本
在C#脚本中,获取Animator组件和RigidBody组件
private Animator animator;
private Rigidbody2D rigidbody;
private void Awake()
{
animator = GetComponent<Animator>();
rigidbody = GetComponent<Rigidbody2D>();
}
Animator的setFloat方法:https://docs.unity3d.com/cn/2022.3/ScriptReference/Animator.SetFloat.html
对Animator赋值,使其影响动画的过渡
public void SetAnimation()
{
animator.SetFloat("velocityX", Mathf.Abs(rigidbody.velocity.x));
}
对velocityX赋值,赋予2D刚体加速度的x轴加值的绝对值
跑步与静止的过渡条件
选择跑步动画与静止动画的箭头,在右侧Conditions
中点击加号,选择velocityX和Greater。当此值大于某个值,则进行跑步动画。此处该值为2.5。
若选择Less,该加值为某个值,就进行静止动画。此处改值为0.1。
根据之前所述,建立一个走路动画,进行过渡条件设置
将走路、跑步、静止动画相连接(走路可过渡跑步、跑步可过渡走路等)
走路动画的加速度大于2.5则进行跑步动画
同理,则跑步动画过渡为走路动画