티스토리 뷰

애니메이션이 플레이 중인지 종료가 되었는지는 다음과 같은 체크 코드를 사용하면 간단하게 알아 볼수 있다.

animator.GetCurrentAnimatorStateInfo(0).IsName("YourAnimationName")


"YourAnimationName" : 메카님 스테이트의 이름(Animator 윈도우를 보면 여러 상태가 있는데 체크하고 싶은 애니메이션이 플레이되는 상태의 이름을 적어주면 된다).


IEnumerator WaitForAnimation(Animator animator)

{

while (true == animator.GetCurrentAnimatorStateInfo(0).IsName("<UserAnimationStateName>")) {

yield return new WaitForEndOfFrame();

}

GameObject.Destroy (animator.gameObject);

}


위 함수를 작성하고 StartCoroutine() 함수를 이용해 호출 해주면 애니메이션 재생이 끝나면 해당 오브젝트가 삭제 된다.


출처 : http://answers.unity3d.com/questions/362629/how-can-i-check-if-an-animation-is-being-played-or.html


위의 방식이 정상 동작하지 않았다. 그래서 아래와 같이 IsInTransition함수를 이용하여 애니메이션 종료 여부를 알아 내도록 한다.

IEnumerator WaitForAnimation(Animator animator)
{
    //while (true == animator.GetCurrentAnimatorStateInfo(0).IsName(name)) {
    while(false == animator.IsInTransition(0)) {
        yield return new WaitForEndOfFrame();
    }
    GameObject.Destroy (animator.gameObject);

}

단 위와 같은 방법을 사용하기 위해서는 메카님에서 상태 변화(Transition)를 시켜 줘야한다.


댓글
댓글쓰기 폼