Unity/트러블 슈팅

[Unity] AnyState 전이로 인한 애니메이션 멈춤 현상 분석

turbulence93 2025. 5. 14. 20:30

 

1. 문제 상황

  • AnyState에서 특정 Death 애니메이션으로 전이 시 SetInteger 파라미터로 조건을 전달했지만, 애니메이션이 멈추는 현상이 발생.

2. 원인 분석

  • Death 애니메이션과 다른 상태 연결 실험
    → Death 상태를 Idle, Attack 등과 연결했을 때는 정상 재생됨.
  • 다른 애니메이션들도 AnyState 전이 테스트
    → 동일하게 조건 유지 시 반복 전이 발생. Death 뿐 아니라 AnyState 자체 문제임을 확인.

  • 직접 애니메이션 실행 (Animator.Play)
    → SetInteger를 사용하지 않고 Animator.Play("Death") 등으로 직접 실행하면 정상 재생되는 것을 확인.

  • Any State가 현재 실행중인 Animation도 포함
    SetInteger로 Any State에서 Death Animation으로 넘어가는 조건이 항상 참으로 고정되어 있어서
    Death Animation -> Death Animation으로 계속해서 호출이 되어 애니메이션이 멈추는 것처럼 보이게 됌

3. 해결 방법

  • 조건 파라미터를 SetInteger에서 SetTrigger로 변경하여 한번 만 체크

4. 개인 적인 생각

  • 이번 경우 Death는 한번 만 체크하면 돼서 Tirgger로 설정했지만 실행 후 다른 스테이트로 넘어가야 된다면 Integer와 Trigger를 같이 사용하는 식으로 체크를 해보아도 될거 같다.
  • 현재 실행중인 Animation도 Any State일거라고 생각을 못했는데, 역시 당연한 것은 없고 조금 더 확장작으로 생각할 수 있는 계기가 된 것 같다.