Unity

[TIL] Unity 최종프로젝트 몬스터 애니메이션 트러블 슈팅

unihee1 2025. 4. 22. 20:35

2025.04.21 - [Unity] - [TIL] Unity 최종프로젝트 몬스터 애니메이션(Animation Event)

 

[TIL] Unity 최종프로젝트 몬스터 애니메이션(Animation Event)

2025.04.16 - [Unity] - [TIL] Unity 최종프로젝트 몬스터 HP바 만들기 [TIL] Unity 최종프로젝트 몬스터 HP바 만들기2025.04.11 - [Unity] - [TIL] Unity 최종프로젝트 몬스터 AI 구현하기(오브젝트풀)_ 4일차 [TIL] Unity

unihee1.tistory.com

 

1. 발단

이전 게시글에서 나온 소리지르는 애니메이션 외에 피해를 입었을 때, 몬스터가 죽었을 때 실행 될 애니메이션을 추가하였다. 애니메이터에서 애니메이션을 연결하고 실행을 해보았더니 내가 의도한 애니메이션으로 가지 않고 엉뚱한 애니메이션이 재생되는 문제가 생겼다.

 

-  달리는 애니메이션이 실행 안되는 경우

몬스터가 Attak 상태였다가 Chase 상태로 변환될 때 애니메이션도 달리는 모션이 나와야 한다. 

하지만 영상에서 보이는 것과 같이 걷는 애니메이션이 나오는 문제가 있었다.

 

- 죽는 애니메이션이 실행 안되는 경우

또한 몬스터의 HP가 0이 될 때 죽는 애니메이션이 재생되어야 하지만 뜬금없이 걷는 애니메이션이 재생되었다.

이처럼 상황에 맞는 애니메이션이 아닌 다른 애니메이션으로 전환되는 문제가 있었다.

 

2. 전개

무엇이 문제인지 확인해 보기 위해 먼저 스크립트를 살펴보았다.

스크립트에 디버그 로그를 넣고 각 상태에 진입을 잘 하는지 살펴보았다.

주로 문제가 생겼던 Chase 상태를 집중적으로 살펴보았지만 스크립트에는 이상이 없었다.

즉 상태가 전환되는 것에는 문제가 없다는 의미이기 때문에 애니메이터를 살펴보기로 했다.

 

3. 절정

처음에 애니메이터를 살펴보았지만 뭐가 문제인지 찾지를 못했다.

인터넷에서 찾아보니 애니메이터 트랜지션 조건이 동시에 여러 개 성립하면 가장 먼저 조건에 맞는 트랜지션으로 이동하기 때문에 우선순위가 꼬여 의도하지 않은 애니메이션이 실행될 수 있다는 것을 알아냈다.

( Idle 상태로 가는 조건이  isChase == false && isAttack == false && isDamage1 == false 이런 식으로 되어 있으면 몬스터가 Zombie Run 상태에서 isChase = false가 되는 순간 애니메이터는 조건을 만족한다고 판단하고 바로 Idle로 전이해버린다.)

 

4. 결말

트랜지션 조건들을 최소화 하였고 실행을 해보니 의도한대로 애니메이션이 잘 재생되었다.

 

 

5. 마무리

이번 트러블 슈팅이 있기 전까진 트랜지션의 조건이 많을수록 정확한 애니메이션이 실행될 것이라고 생각했었다.

하지만 오히려 우선순위를 꼬아버려서 문제가 된다는 것을 깨닫게 되었으며 애니메이터에 대한 공부가 필요하다는 것을 느꼈다.