GeekCoders

[Unity] Animator Play Animation 본문

Client/Unity

[Unity] Animator Play Animation

령호 2016. 2. 17. 14:47

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