2D游戏入门——小狐狸系列(六)为人物添加动画

Session06:动画效果Animation

添加动画效果

这节课我们来为人物添加动画效果

先为人物创建一个Animator组件,并创建一个Animator Controller,将它拖到Animator组件的对应位置。

image-20211022144048527

然后来创建具体的动画,在Window->Animation下找到Animation并打开:

image-20211022144157499

这是一个和flash一样的东西,点击新建一个clip,叫做idle,作为闲置状态的动画

image-20211022144249937

然后将素材中的图片拖到右边的时间轴那里,此时点击播放,会发现人物的运动太快了,有两种方法可以调节速度,一种是选中所有帧,将它拉长,另一种是直接修改samples的值,也就是取样的频率,这里选择第二种方式,将samples修改为10

image-20211022144513410

如果发现没有samples的可以点击右上角的三个点来添加。

这样动画速度就正常了。

按照同样的方法为人物添加run的动画。

设置动画切换

我们现在有两种动画状态,idle和run,需要在这两种状态之间切换,有很多方法可以实现,这里我们选择通过人物“速度”的判断来实现

Window->Animation下找到Animator并打开

image-20211022145532310

这里已经有我们添加的两个动画idle和run,分别选择它们,右键选择make transition,也就是创建过渡

image-20211022145655557

在左上角的parameters那里添加一个float类型的参数running

image-20211022141535245

选中idel->run的transition箭头,在右侧的Inspector修改参数,不需要exit time,取消勾选,也不需要transition duration也就是过渡时间,我们希望它直接切换状态,然后新增一个condition,当running值大于0.1时切换动画为run。

image-20211022141632245

同样对run->idle也进行相应的修改

image-20211022141820129

好了,那么怎么将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。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值