김펭귄 관찰일기
article thumbnail

1. 문제 발생

 Any State을 사용해 바로바로 반응되는 애니메이션을 만들고 있었는데, Transition Duration을 0으로 세팅하면 자꾸 애니메이션이 재생되지 않는 문제가 있었다. 애니메이션이 걸리지 않는 건 아닌데 걸리기만 할 뿐 애니메이션 하단바는 멈춰있었다. 한참을 헤맸는데 Transition Duration 값을 0이 아닌 값으로 잡게 되면 잘 작동했다. 하지만 Trasition Duration 값을 늘리면 애니메이션이 부드럽게 전환되다 보니 뭐랄까 캐릭터는 움직이는데 캐릭터 걷는 애니메이션은 실행되지 않는 문제가 있다.

 

 

2. 해결 방법

https://discussions.unity.com/t/animation-doesnt-start-if-i-set-transition-duration-to-0/134808

 

Animation doesn't start if I set Transition Duration to 0

Hey, I have a problem with animations. I have one animator controller and 4 animations. I want to change animation randomly after I click mouse button. I have one Integer parameter ‘whichFly’ and made condition in every transition. When user click a mo

discussions.unity.com

 한참을 발품 팔고 다닌 끝에 결국 해결방법을 찾을 수 있었다.

 

 Any State에서 처음 뻗어나가는 Transition을 보면 Can Transition To Self라는 체크 박스가 있다. 이 녀석을 체크 해제하면 애니메이션이 정상적으로 작동한다. 대체 왜?

 

 Any State는 매번 Update가 이루어질 때마다 Transition 조건을 비교하고 조건이 충족된다면 곧바로 애니메이션을 전환한다. 특히 나는 int 값으로 조건을 비교했기 때문에 int 값을 날리지 않는 이상, 계속해서 같은 int와 조건을 비교하고 또 비교하고 또 비교하고 하다보니 첫 프레임만 보이게 된 것이다. 아주 흥미롭다. 해결 방법으로는 Can Transition To Self를 체크 해제하거나 Trigger을 사용하는 방법이 있다고 한다. Trigger는 한 번 조건을 비교하면 그 값이 사라지기 때문에 비교할 변수가 없으니 첫 프레임만 호출하는 일은 없다고 한다.

profile

김펭귄 관찰일기

@Penguin.Kim