[Unity] Animator Play Animation
Sprite Renderer 사용으로 어쩔수 없이 Animation 대신에 Animator를 쓰고 있다.
Sprite Renderer는 Legacy animation을 지원하지 않는다.
그리고 문제는
Animation anim = this.gameObject.GetComponent<Animation>();
Anim.Play("animname1");
Anim.Play("animname2");
위 소스코드는 문제가 없다. // result : play animname2
Animator anim = this.gameObject.GetComponent<Animator>();
anim.Play("animname1");
anim.Play("animname2");
위 소스코드는 animname2가 재생되지 않는다. // result : play animname1
Animator는 한프레임에 두번의 Anim Play가 되지 않는다.
소스코드 내의 상태머신에서 한프레임에 애니메이션 두번플레이가 콜 되는 경우가 생기기도 하기에 잠재적버그의 발생위험이 너무 컸다. 물론 Animator 내의 상태를 사용하면 되겠지만 이미 소스코드는 자체제작 상태머신기반이다.
ex ) enemy.State(Attack); // enemy state : attack & play attack animation
player -> enemy attack // player to enemy attack
enemy.State(Die); // enemy state : die & play die animation
해결방법은
Animator anim = this.gameObject.GetComponent<Animator>();
anim.Play("animname, -1, 0f");
/// animation name, layer, normalized time
animator의 animation layer 링크
http://docs.unity3d.com/kr/current/Manual/AnimationLayers.html