Unity 动画系统

时间:2023-03-09 21:52:06
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);
}
}

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