2D游戏入门——小狐狸系列(六)
作者:互联网
Session06:动画效果Animation
添加动画效果
这节课我们来为人物添加动画效果
先为人物创建一个Animator组件,并创建一个Animator Controller,将它拖到Animator组件的对应位置。
![image-20211022144048527](https://image-ym.oss-cn-guangzhou.aliyuncs.com/img/image-20211022144048527.png)
然后来创建具体的动画,在Window->Animation下找到Animation并打开:
![image-20211022144157499](https://image-ym.oss-cn-guangzhou.aliyuncs.com/img/image-20211022144157499.png)
这是一个和flash一样的东西,点击新建一个clip,叫做idle,作为闲置状态的动画
![image-20211022144249937](https://image-ym.oss-cn-guangzhou.aliyuncs.com/img/image-20211022144249937.png)
然后将素材中的图片拖到右边的时间轴那里,此时点击播放,会发现人物的运动太快了,有两种方法可以调节速度,一种是选中所有帧,将它拉长,另一种是直接修改samples的值,也就是取样的频率,这里选择第二种方式,将samples修改为10
![image-20211022144513410](https://image-ym.oss-cn-guangzhou.aliyuncs.com/img/image-20211022144513410.png)
如果发现没有samples的可以点击右上角的三个点来添加。
这样动画速度就正常了。
按照同样的方法为人物添加run的动画。
设置动画切换
我们现在有两种动画状态,idle和run,需要在这两种状态之间切换,有很多方法可以实现,这里我们选择通过人物“速度”的判断来实现
Window->Animation下找到Animator并打开
![image-20211022145532310](https://image-ym.oss-cn-guangzhou.aliyuncs.com/img/image-20211022145532310.png)
这里已经有我们添加的两个动画idle和run,分别选择它们,右键选择make transition,也就是创建过渡
![image-20211022145655557](https://image-ym.oss-cn-guangzhou.aliyuncs.com/img/image-20211022145655557.png)
在左上角的parameters那里添加一个float类型的参数running
![image-20211022141535245](https://image-ym.oss-cn-guangzhou.aliyuncs.com/img/image-20211022141535245.png)
选中idel->run的transition箭头,在右侧的Inspector修改参数,不需要exit time,取消勾选,也不需要transition duration也就是过渡时间,我们希望它直接切换状态,然后新增一个condition,当running值大于0.1时切换动画为run。
![image-20211022141632245](https://image-ym.oss-cn-guangzhou.aliyuncs.com/img/image-20211022141632245.png)
同样对run->idle也进行相应的修改
![image-20211022141820129](https://image-ym.oss-cn-guangzhou.aliyuncs.com/img/image-20211022141820129.png)
好了,那么怎么将running参数对应到人物的速度呢?这就需要在PlayController中设置Animator的相关参数了。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public Animator animator;
// Update is called once per frame
void Update()
{
Movement();
}
void Movement()
{
//...省略
//角色移动
if (horizontalAxis != 0)
{
rb.velocity = new Vector2(horizontalAxis * speed * Time.fixedDeltaTime, rb.velocity.y);
//控制运动动画
animator.SetFloat("running", Mathf.Abs(faceDirection));
}
//...省略
}
}
获得Animator组件,设置float类型的参数"running"的值(可以选择通过id或name的方式来获取变量)为faceDirection的绝对值(也就是只有0和1),当0时人物处于idle状态,当1时run。
标签:动画,run,入门,狐狸,running,2D,idle,添加,Animator 来源: https://blog.csdn.net/Ricardo_M_Hu/article/details/121189260