Has Exit Time이란??
Has Exit Time은 Animator의 설정 중 하나로, 애니메이션 전환이 끝나기 전에 트랜지션을 할지 여부를 결정하는 옵션입니다. 이 옵션을 사용하면 특정 애니메이션 클립이 플레이어에 의해 완전히 재생된 후에만 트랜지션을 수행할 수 있습니다.
Has Exit Time이 true로 설정된 경우 애니메이션은 지정된 시간 동안 실행된 후 자동으로 종료됩니다. Has Exit Time이 false로 설정된 경우 애니메이션은 플레이어의 입력이나 다른 이벤트에 의해 종료될 때까지 계속 실행됩니다.
이 옵션을 사용하는 이유는 애니메이션 클립이 완전히 재생되기 전에 트랜지션되면 자연스럽지 않은 전환 현상이 발생할 수 있기 때문입니다. 예를 들어, 캐릭터의 걷기 애니메이션 클립이 재생 중일 때, 갑자기 달리기 애니메이션으로 전환되면 캐릭터의 움직임이 부자연스러울 수 있습니다. 이런 경우 "Has Exit Time" 옵션을 사용하여 애니메이션 클립의 재생이 완료된 후에만 트랜지션이 가능하도록 설정할 수 있습니다.
이 옵션을 설정하는 방법은 다음과 같습니다:
1. Animator Controller에서 Transition을 선택합니다.
2. Inspector 창에서 "Has Exit Time" 옵션을 체크합니다.
Has Exit Time을 사용하여 다음과 같은 효과를 만들 수 있습니다.
- 캐릭터가 일정 시간 동안만 특정 애니메이션을 수행하도록 합니다.
- 애니메이션이 자동으로 종료되어야 하는 경우(예: 캐릭터가 죽었을 때)를 구현합니다.
Exit Time
Exit Time은 애니메이션 전환이 시작되는 시간을 결정합니다. Exit Time은 Fixed Duration이 true이면 절대적인 시간으로, Fixed Duration이 false이면 애니메이션의 비율로 지정됩니다.
Fixed Duration
Fixed Duration 옵션은 애니메이션 전환의 시점을 결정하는 옵션입니다. 이 옵션이 true이면 애니메이션 전환은 절대적인 시간으로 이루어지며, false이면 애니메이션의 비율로 이루어집니다.
절대적인 시간으로 전환
Fixed Duration 옵션이 true이고 Exit Time이 0.5이면, 애니메이션이 시작된 후 0.5초가 지나면 애니메이션 전환이 이루어집니다. 즉, 애니메이션의 전체 길이가 1초라면, 애니메이션의 50%가 재생된 후 전환이 이루어집니다.
애니메이션 비율로 전환
Fixed Duration 옵션이 false이고 Exit Time이 0.9이면, 애니메이션의 전체 길이의 90%가 재생된 후 애니메이션 전환이 이루어집니다. 즉, 애니메이션의 전체 길이가 10초라면, 애니메이션이 9초 재생된 후 전환이 이루어집니다.
Interruption Source
이 옵션은 어느 시점에 Transition을 할 수 있는지를 결정하는 옵션입니다
- Current : 현재 애니메이션의 시작점에서만 애니메이션 전환이 발생할 수 있습니다. 즉, 현재 애니메이션이 아직 시작되지 않았거나, 이미 종료된 경우에는 애니메이션 전환이 발생할 수 없습니다.
- Next : 현재 애니메이션의 도착점에서만 애니메이션 전환이 발생할 수 있습니다. 즉, 현재 애니메이션이 아직 시작되지 않았거나, 도착점에 도달하기 전에 애니메이션 전환이 발생하면 현재 애니메이션은 중단됩니다.
- Current Then Next : 현재 애니메이션의 시작점과 도착점에서 모두 애니메이션 전환이 발생할 수 있습니다. 이 경우, 현재 애니메이션의 시작점에서 애니메이션 전환이 먼저 발생하면, 현재 애니메이션은 중단됩니다.
- Next Then Current :현재 애니메이션의 도착점과 시작점에서 모두 애니메이션 전환이 발생할 수 있습니다. 이 경우, 현재 애니메이션의 도착점에서 애니메이션 전환이 먼저 발생하면, 현재 애니메이션은 중단되지 않습니다.
조합에 따른 애니메이션 전환의 동작
Fixed Duration 옵션과 Interruption Source 옵션의 조합에 따라 애니메이션 전환의 동작은 다음과 같이 달라집니다.
Fixed Duration | Interruption Source | 동작 |
true | Current | 현재 애니메이션이 시작된 후 Exit Time이 지난 후, 현재 애니메이션은 중단되고 다음 애니메이션이 시작됩니다. |
true | Next | 현재 애니메이션이 시작된 후 Exit Time이 지난 후, 다음 애니메이션이 시작됩니다. 현재 애니메이션은 중단되지 않습니다. |
true | Current Then Next | 현재 애니메이션이 시작된 후 Exit Time이 지난 후, 현재 애니메이션은 중단되고 다음 애니메이션이 시작됩니다. 그러나, 현재 애니메이션의 도착점에서 애니메이션 전환이 먼저 발생하면, 현재 애니메이션은 중단되지 않고 다음 애니메이션이 시작됩니다. |
true | Next Then Current | 현재 애니메이션이 시작된 후 Exit Time이 지난 후, 다음 애니메이션이 시작됩니다. 그러나, 현재 애니메이션의 도착점에서 애니메이션 전환이 먼저 발생하면, 현재 애니메이션은 중단되지 않습니다. |
false | Current | 현재 애니메이션의 전체 길이의 Exit Time에 도달하면, 현재 애니메이션은 중단되고 다음 애니메이션이 시작됩니다. |
false | Next | 현재 애니메이션의 전체 길이의 Exit Time에 도달하면, 다음 애니메이션이 시작됩니다. 현재 애니메이션은 중단되지 않습니다. |
false | Current Then Next | 현재 애니메이션의 전체 길이의 Exit Time에 도달하면, 현재 애니메이션은 중단되고 다음 애니메이션이 시작됩니다. 그러나, 현재 애니메이션의 도착점에서 애니메이션 전환이 먼저 발생하면, 현재 애니메이션은 중단되지 않고 다음 애니메이션이 시작됩니다. |
false | Next Then Current | 현재 애니메이션의 전체 길이의 Exit Time에 도달하면, 다음 애니메이션이 시작됩니다. 그러나, 현재 애니메이션의 도착점에서 애니메이션 전환이 먼저 발생하면, 현재 애니메이션은 중단되지 않습니다. |
예를 들어, Fixed Duration 옵션이 true이고 Interruption Source 옵션이 Current이면, 다음과 같은 애니메이션 전환이 발생할 수 있습니다.
- 애니메이션이 시작된 후 0.5초가 지나면, 현재 애니메이션은 중단되고 다음 애니메이션이 시작됩니다.
- 애니메이션이 시작된 후 0.3초가 지나고, 다음 애니메이션이 시작되면, 현재 애니메이션은 중단되고 다음 애니메이션이 시작됩니다.
또한, Fixed Duration 옵션이 false이고 Interruption Source 옵션이 Next이면, 다음과 같은 애니메이션 전환이 발생할 수 있습니다.
- 애니메이션이 시작된 후 0.9초가 지나면, 다음 애니메이션이 시작됩니다. 현재 애니메이션은 중단되지 않습니다.
- 애니메이션이 시작된 후 0.5초가 지나고, 다음 애니메이션이 시작되면, 현재 애니메이션은 중단되지 않습니다. 다음 애니메이션이 시작됩니다.
Fixed Duration 옵션과 Interruption Source 옵션을 적절하게 조합하여, 원하는 애니메이션 전환의 동작을 구현할 수 있습니다.
'Unity' 카테고리의 다른 글
Unity 카메라의 뷰포트를 설정하여 원하는 시야를 만들자 (0) | 2023.12.14 |
---|---|
Camera : Orthographic과 Perspective (0) | 2023.12.13 |
월드 공간 지점을 스크린상의 지점으로 변환 : WorldToScreenPoint (0) | 2023.12.08 |
화면 위치에 해당하는 Ray 생성 : Camera.main.ScreenPointToRay (0) | 2023.12.07 |
Unity의 Character Controller : 간단하게 움직임 구현 (0) | 2023.12.05 |