Mecanim用状态机和代码控制状态的改变

本文详细介绍了如何在Unity中使用动画状态机(Animator)来控制角色动画,包括创建动画控制器、设置状态转换条件及使用脚本控制动画参数等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.将动画模型放在场景中.
2.在工程面板创建一个Animator Controller

3.将创建出来的Animator Controller添加进对应的默认动画的Animator->Controller里面.
4.双击创建出来的Animator Controller.打开状态机(Animator).
5.一些状态机的设置.
6.把对应的状态直接拖拽到状态机中,就可以直接生成对应的状态.
7.Parameters里面有4个参数.用这4个参数可以设置对应的状态开启条件.
8.用Float进行举例说明.我们设置2个参数,分别是Speed和Angular用来控制他的前进和转向.
从Idle状态进入到Run0状态的时候,有3个条件,分别是Speed>0.1 && Angular<0.1 && Angular>-0.1
符合这三个条件的时候,状态机才会从Idle状态转化到Run0的状态.
同样,如果想从Run0到Idle状态,也许要设置条件.

这里有一个Has Exit Time的选项,如果勾线的话,就算满足条件也会等这个动画播放完成之后才执行下一个动画.如果不勾选就会立即这个操作.
9.用对应的脚本来控制Speed或者Angular设置他们的值.
private Animator ani;
    void Awake()
    {
        ani = GetComponent<Animator>();
    }
       void Update () {
           ani.SetFloat("Speed",Input.GetAxis("Vertical"));
        ani.SetFloat("Angular",Input.GetAxis("Horizontal"));
    }
Ps:用关键字Awake在程序唤醒之前就得到Animator的组件.
Animator有几个方法.分别可以设置上面对应Parameters.
分别为:
ani.SetFloat("A",B);
ani,SetBool("C",D);
A:表示在Parameter名字
B:Float属性值
C:表示在Parameter名字
D:Bool属性值
10.不管当前在何种状态,只要满足条件,都会触发Dying的动画.
这个就是Any State的用法.其实相当于每一个状态都指向Dying,并且触发条件一样.
      ani.SetBool("IsDie",Input.GetKeyDown(KeyCode.Space));

PS:尊重原创,转载请注明出处.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值