본문 바로가기

Unity

[Unity] GetCurrentAnimatorStateInfo로 애니메이션 상태 체크하기

728x90

Animator의 GetCurrentAnimatorStateInfo 함수를 통해서 현재 진행되고 있는 애니메이션의 상태를 체크할 수 있습니다.

 

1
2
3
4
5
6
    if (!PlayerMovement.instance.anim.GetCurrentAnimatorStateInfo(0).IsName("Idle"))
        {
            PlayerMovement.instance.anim.SetBool("Attack"false);
            PlayerMovement.instance.anim.SetBool("Walk"false);
            PlayerMovement.instance.anim.SetBool("Idle"true);
        }

 

위의 코드의 조건문은 PlayerMovement의 애니메이터에 현재 진행되고 있는 애니메이션의 이름이 Idle이 아니라면 조건문 안으로 들어가게 되어있습니다.

 

현재 진행되고 있는 애니메이션이 무엇인지 볼 수 있는 것이 GetCurrentAnimatorStateInfo.IsName 입니다.

 

1
2
3
4
    if (PlayerMovement.instance.anim.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1.0f)
        {
            //하고 싶은 동작
        }

 

위의 코드에서 normalizedTime = 1의 뜻은 현재 진행되고 있는 애니메이션이 모두 진행되었다는 것이고,  normalizedTime = 0은 애니메이션이 아직 시작하지 않았다는 것을 뜻합니다.

 

이렇게 GetCurrentAnimatorStateInfo를 통해서 현재 진행되고있는 애니메이션의 정보를 가져올 수 있습니다.

728x90