Unity 动画系统

 

Legacy动画系统:Animation组件(旧)

Mecanim动画系统:Animator组件(新)

 

动画播放过程:

//动画片段
[System.Serializable]
public class Anim
{
    public AnimationClip idle;
    public AnimationClip runForward;
    public AnimationClip runBackward;
    public AnimationClip runRight;
    public AnimationClip runLeft;
}

public class PlayerCtrl : MonoBehaviour
{   
    public Anim anim;
    public Animation _animation;
    
     void Start()
    {
        tr = GetComponent<Transform>();
        _animation = GetComponentInChildren<Animation>();

        //_animation.clip = anim.idle;
        //_animation.Play();
    }

   void Update()
    {
        h = Input.GetAxis("Horizontal");
        v = Input.GetAxis("Vertical");

        Vector3 moveDir = (Vector3.forward * v) + (Vector3.right * h);
        tr.Translate(moveDir.normalized * Time.deltaTime * moveSpeed, Space.Self);
        tr.Rotate(Vector3.up * Time.deltaTime * rotSpeed * Input.GetAxis("Mouse X"));

        if (v >= 0.1F)
        {
            _animation.CrossFade(anim.runForward.name, 0.3F);
        }
        else if (v <= -0.1F)
        {
            _animation.CrossFade(anim.runBackward.name, 0.3F);
        }
        else if (h >= 0.1F)
        {
            _animation.CrossFade(anim.runRight.name, 0.3F);
        }
        else if (h <= -0.1F)
        {
            _animation.CrossFade(anim.runLeft.name, 0.3F);
        }
        else
        {
            _animation.CrossFade(anim.idle.name, 0.3F);
        }
    }

这个过程是很重要的,通过获取到的坐标的大小进行播放不同的动画,并且有着平稳的过度。

 

posted @ 2019-04-15 21:50  彩色的梦  阅读(361)  评论(0编辑  收藏  举报