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

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


        Animation Controller(动画控制器)是Animator的重要组成部分,是模型动画的驱动,动画控制器是通过动画状态机来实现不同动画剪辑的切换。
        这里有两个关键词:
Unity Mecanim动画的实现(四):Animation Controller设置_第1张图片
        1.状态(动画剪辑),动画剪辑就是每个动画模型所可以执行的动画剪辑(Animation),比如休闲(Ideal)、走(Walk)、跑(Run)等。状态以圆角矩形表示,黄色表示默认的状态,即模型的默认动画状态。在实际操作中只要将动画剪辑拖拽到Animation Controller中就可以成为一个状态。
        每个状态就是一段动画,可以通过动画剪辑中的speed属性来控制动画播放速度,甚至进行倒序播放。如下图中的Walk-Sheathedback和Walk-Sheathed其实为一个动画剪辑,但是Walk-Sheathedback将速度设定为-1,则其将由Walk-Sheathed的最后一帧往第一帧播放。
Unity Mecanim动画的实现(四):Animation Controller设置_第2张图片
        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();
    }

    // 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);
        }

    }
}

你可能感兴趣的:(Unity,VR,工业仿真)