Unity引擎2D游戏开发,创建人物动画

发布时间 2023-12-13 17:34:07作者: 心霖の雨

给人物创建Animator动画组件

image

在素材库新建Animation文件夹

专门存动画相关的文件

image

Animation文件夹中创建Player文件夹

image

右击Player文件夹,创建Animator Controller

image

将新建的Animator Controller赋予人物中Animator组件中的Controller

image

选择Window,选择Animation,打开Animator窗口

image

选中Player人物,然后选择Window,选择Animation,再选择子菜单的Animation

image

在下方Animation窗口中,选择左侧的Clip,选择Create new Clip

选择好文件夹后,重命名为BlueIdle,为蓝色衣服小人静止时的动画。其他动画,以此类推。

image

一、人物静止动画

选择好小人的静止动画,拖入Animation时间轴窗口中

image

image
如果动画速度过快,则调整Samples数值,数值越大,播放速率越快

二、人物跑步动画

选择好小人的跑步动画,拖入到新建立的跑步动画Clip中

image

由于跑步动画是需要触发才开始执行的,所以在Animator窗口中,新建一个X轴加值的变量velocityX
image

将跑步动画和静止动画相连接

在Animator主窗口中,可以看到BlueIdle和Run的动画方块。BlueIdle动画是可以转换到Run动画,Run动画也可以转换到BlueIdle动画。因此,将它们互相连接。右击方块,选择Make Transition即可。
image

点击箭头,在右侧可以选择关闭Has Exit Time(退出时间),Fixed DurationTransition Duration(过渡动画)
image

对动画过渡进行编程

在素材库,在Scripts→Player中,新建一个Animation C#脚本
image

在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。
image

若选择Less,该加值为某个值,就进行静止动画。此处改值为0.1。
image

根据之前所述,建立一个走路动画,进行过渡条件设置

将走路、跑步、静止动画相连接(走路可过渡跑步、跑步可过渡走路等)
image

走路动画的加速度大于2.5则进行跑步动画
image

同理,则跑步动画过渡为走路动画
image