GeekCoders
[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
'Client > Unity' 카테고리의 다른 글
[Unity] flatbuffers 연동 (0) | 2016.10.08 |
---|---|
[Unity] Visual Studio UnityAPIReference (0) | 2016.03.22 |
[Unity] Log Handling, Exception Handling, Error Handling (0) | 2015.06.07 |
[Unity] 유니티 프로그래머가 알아야 할 최적화 스크립트 코드 작성법 (27) | 2015.04.08 |
[Unity] JsonFX 사용하기 (1) | 2015.03.04 |