Unity Mecanim动画的实现(四):Animation Controller设置

来源:互联网 发布:步步高软件下载中心 编辑:程序博客网 时间:2024/06/06 18:16

Unity Mecanim动画的实现(四):Animation Controller设置

    Animation Controller(动画控制器)是Animator的重要组成部分,是模型动画的驱动,动画控制器是通过动画状态机来实现不同动画剪辑的切换。     这里有两个关键词: 

这里写图片描述
1.状态(动画剪辑),动画剪辑就是每个动画模型所可以执行的动画剪辑(Animation),比如休闲(Ideal)、走(Walk)、跑(Run)等。状态以圆角矩形表示,黄色表示默认的状态,即模型的默认动画状态。在实际操作中只要将动画剪辑拖拽到Animation Controller中就可以成为一个状态。
每个状态就是一段动画,可以通过动画剪辑中的speed属性来控制动画播放速度,甚至进行倒序播放。如下图中的Walk-Sheathedback和Walk-Sheathed其实为一个动画剪辑,但是Walk-Sheathedback将速度设定为-1,则其将由Walk-Sheathed的最后一帧往第一帧播放.
这里写图片描述
2.过渡(Transition),过渡指不同动画之间的切换条件,在动画状态机中以方向箭头表示。状态之间的过渡需要通过状态参数来进行控制,即在Unity中通过脚本控制状态参数之间的变化来控制状态之间的变化。比如在我们可以设定一个Float参数Speed来控制Idle、Walk和Run之间的切换。Idle与Walk之间:Speed>0,Walk;Speed<0.01,Idle。Walk与Run之间,Speed>0.5,Run;Speed<0.5,Walk。通过这个设定我们只要用如下脚本就可以实现模型在Idle、Walk和Run之间切换。

float v=Input.GetAxis("Vertical");//如果不按键,则会为0,如果按键为W则逐渐由0-1变化,松开之后则由1-0变化,如果按下S则由0 - -1变化,松开则-1-0变化_animator.SetFloat(SPEED,v);

通过动画状态机的设置可以简单实现模型的前后走动与跑步,以及实现武器(工器具)动画的切换。切换需要通过代码进行控制

using System.Collections;public class PlayerControllerScript : MonoBehaviour {    private Animator _animator;    public  const string SPEED="Speed";    public const string ISFIGHT="IsFight";    public float speed=10f;    public bool isFight=false;    // Use this for initialization    void Start () {    }    void Awake(){        _animator=GetComponent<Animator>();    }    // Update is called once per frame    void Update () {        float v=Input.GetAxis("Vertical");//如果不按键,则会为0,如果按键为W则逐渐由0-1变化,松开之后则由1-0变化,如果按下S则由0 - -1变化,松开则-1-0变化        _animator.SetFloat(SPEED,v);        if(v>0f){            transform.position+=Time.deltaTime*speed*v*Vector3.forward;        }if(v<0f){//如果按键0,则倒退            transform.position+=Time.deltaTime*speed*v*Vector3.forward*0.4f;        }        if(Input.GetKeyDown(KeyCode.Q)){//按键Q来切换武器            isFight=!isFight;            _animator.SetBool(ISFIGHT,isFight);        }    }}
阅读全文
0 0
原创粉丝点击