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

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:尊重原创,转载请注明出处.

猜你喜欢

转载自blog.csdn.net/allen_zgd/article/details/79100795
今日推荐