부트캠프

애니메이션의 상태판단

noyyo 2023. 11. 15. 22:45

현재 애니메이터가 재생하고 있는 애니메이션의 상태를 판단해야할 때가 있다.

이럴 때 쓸 수 있는 것이 Animator의 GetCurrentAnimatorStateInfo 메소드이다.

Animator animator;
animator = GetComponent<Animator>();
AnimatorStateInfo info = animator.GetCurrentAnimatorStateInfo(0);

 

위와 같이 사용할 수 있다. 매개변수로 들어간 0은 애니메이터의 레이어를 의미한다.

애니메이터의 레이어가 여러개라면 상태를 받아오고 싶은 레이어 값을 넣어주면 된다.

 

이렇게 받아온 AnimatorStateInfo를 통해서 여러가지 정보를 얻을 수 있다.

대표적으로 사용되는 값은 normalizedTime이다. 해당 값은 현재 애니메이션의 재생정도를 보여준다.

30% 재생되었다면 0.3이다. 주의할 점으로는 트랜지션이 일어나고 있다면 이전의 애니메이션이 아니라 다음 애니메이션의 값을 돌려준다.

재생중이던 애니메이션이 0.9만큼 진행됐고 트랜지션중인 애니메이션이 0.1만큼 진행됐으면 0.1을 돌려준다.

 

이 값과 Tag, Name등의 비교를 통해서 애니메이터의 상태를 판단할 수 있다.