애니메이션 전환(Animation transitions)을 사용하면 상태 머신이 하나의 애니메이션 상태에서 다른 애니메이션 상태로 전환하거나 혼합될 수 있습니다. 전환은 상태 간의 혼합이 가져야 하는 기간뿐만 아니라 활성화해야 할 조건을 정의합니다. 특정 조건이 충족될 때만 전환이 발생하도록 설정할 수 있습니다. 이러한 조건을 설정하려면 애니메이터 컨트롤러에서 파라미터의 값을 지정해야 합니다.
예를 들어 캐릭터는 “순찰 중” 상태와 “수면 중” 상태일 수 있습니다. “경보” 파라미터 값이 특정 수준 아래로 떨어지는 경우에만 순찰과 수면 사이의 전환을 설정할 수 있습니다.
전환에 이름을 부여하려면 아래와 같은 필드에 입력해야 합니다.
상태의 인스펙터 창에는 상태가 사용하는 전환이 아래와 같이 표시됩니다.
한번에 하나의 전환만 사용할 수 있습니다. 그러나 설정에 따라서 현재 활성화된 전환을 또 다른 전환이 중단할 수 있도록 허용할 수 있습니다. 아래의 전환 중단을 참조하십시오.
전환의 프로퍼티를 보려면 애니메이터 창에서 두 상태를 연결하는 전환 라인을 클릭해야 합니다. 인스펙터 창에 프로퍼티가 표시됩니다.
다음 프로퍼티를 사용하여 전환과 현재, 다음 상태를 어떻게 블렌딩할지 조절해야 합니다.
프로퍼티 | 기능 |
---|---|
Has Exit Time | Exit Time 은 파라미터에 의존하지 않고 상태의 정규화된 시간에 의존하는 특별한 전환입니다. Exit Time 에서 지정한 시간에 전환이 발생하도록 확인해야 합니다. |
Settings | 아래와 같은 자세한 전환 설정이 있는 폴드 아웃 메뉴입니다. |
Exit Time |
Has Exit Time 에 체크가 되면 이 값은 전환이 실행되는 정확한 시간을 나타냅니다. 이는 정규화된 시간에서 나타납니다. 예를 들어 종료 시간이 0.75이면 애니메이션의 75%가 재생된 첫 프레임에서 Exit Time 조건은 true입니다. 다음 프레임에서 조건은 false가 됩니다. 반복 애니메이션의 경우 종료 시간이 1보다 작은 전환은 반복할 때마다 측정되며, 이를 사용하여 애니메이션 반복마다 적절한 전환 시간을 맞출 수 있습니다. Exit Time 이 1보다 큰 전환은 한 번만 측정되며, 이를 사용하여 일정 횟수 반복 후 지정한 시간에 종료할 수 있습니다. 예를 들어 종료 시간이 3.5인 전환은 3.5회 반복 후 한 번 측정됩니다. |
Fixed Duration | Fixed Duration 상자에 체크되어 있을 경우 전환 시간은 초로 나타납니다. Fixed Duration 상자가 체크되어 있지 않을 경우 전환 시간은 소스 상태의 정규화된 시간의 부분으로 나타납니다. |
Transition Duration | 현재 상태의 지속 시간을 기준으로 한 상대적인 전환 지속 시간입니다. Fixed Duration 모드에 따라 정규화된 시간 또는 초 단위로 표시됩니다. 전환 그래프에서 두 파란색 마커 사이에 있는 부분으로 시각화됩니다. |
Transition Offset | 전환될 도착 상태에서의 플레이를 시작할 시간의 오프셋입니다. 예를 들어 값이 0.5일 경우, 목표 상태가 타임라인의 50% 지점에서 플레이를 시작합니다. |
Interruption Source | 전환이 중단될 수 있는 상황을 제어하는 데 사용합니다. 아래의 전환 중단을 참조하십시오. |
Ordered Interruption | 현재 전환이 순서와 관계없이 다른 전환에 의해 중단될 수 있는지 여부를 결정합니다. 아래의 전환 중단을 참조하십시오. |
Conditions | 전환은 하나의 조건, 여러 조건 또는 조건이 없을 수도 있습니다. 전환에 조건이 없다면 Unity 에디터는 Exit Time 만을 고려하며, 종료 시간이 되면 전환이 발생합니다. 전환에 하나 이상의 조건이 있을 경우 전환이 트리거되려면 모든 조건이 충족되어야 합니다. 조건은 다음과 같이 구성됩니다. - 이벤트 파라미터(조건에서 고려되는 값) - 조건부 술어(필요할 경우 예를 들어 플로트(float)에서 ‘보다 작은’ 또는 ‘보다 큰’) - 파라미터 값(필요할 경우) 전환을 위해 Has Exit Time 을 선택하고 하나 이상의 조건이 있는 경우 Unity 에디터는 Exit Time 이후에 조건이 true인지 여부를 고려해야 합니다. 이를 통해 애니메이션의 특정 부분에서 전환이 발생하도록 할 수 있습니다. |
Interruption Source 와 Ordered Interruption 프로퍼티를 사용하여 전환이 어떻게 중단될지 조정해야 합니다.
중단 순서는 개념적으로 전환이 대기열인 것처럼 작동하고 삽입된 첫 번째 전환에서 마지막 전환까지 유효한 전환을 위해 파싱됩니다.
AnyState의 전환은 언제나 대기열에 가장 먼저 추가되고, 이후 다른 전환은 Interruption Source 값에 따라 대기열에 추가됩니다.
값 | 기능 |
---|---|
None | 더 이상 전환을 추가하지 말아야 합니다. |
Current State | 현재 상태의 전환을 대기열에 추가해야 합니다. |
Next State | 다음 상태의 전환을 대기열에 추가해야 합니다. |
Current State then Next State | 현재 상태의 전환을 대기열에 추가하고, 다음 상태의 전환을 대기열에 추가해야 합니다. |
Next State then Current State | 다음 상태의 전환을 대기열에 추가하고, 그런 다음, 현재 상태의 전환을 대기열에 추가해야 합니다. |
Ordered Interruption 프로퍼티는 대기열이 파싱되는 방식을 변경합니다.
이 값에 따라서 대기열 파싱은 아래 리스트와 같이 다른 시간에 끝납니다.
값 | 끝나는 시간 |
---|---|
체크됨 | 유효한 전환 또는 현재 전환을 발견했습니다. |
체크되어 있지 않음 | 유효한 전환을 발견했습니다. |
AnyState 전환만이 스스로 중단될 수 있습니다.
전환 중단에 대한 자세한 내용은 Unity 블로그 포스트 상태 머신 전환 중단을 참조하십시오.
위 리스트의 설정을 수동으로 조절하려면 필드에 바로 숫자를 입력하거나 전환 그래프를 사용해야 합니다. 전환 그래프는 시각 요소가 조정되어 있을 때만 값을 수정합니다.
다음 지침을 사용하여 그래프 뷰에서 전환 프로퍼티를 변경해야 합니다.
이 전환의 현재 또는 다음 상태가 블렌드 트리 상태일 경우 Blend Tree 파라미터가 인스펙터에 나타납니다. 이 값을 조절하여 블렌드 트리 값을 다르게 설정했을 때 전환이 어떻게 보일지 미리 보아야 합니다. 블렌드 트리에 길이가 다른 클립이 있을 경우 짧은 클립과 긴 클립을 표시할 때 전환이 어떻게 보일지 테스트해야 합니다. 이 값을 조절해도 런타임 시점의 전환 동작에는 영향을 주지 않습니다. 이 값은 전적으로 전환 상황을 여러 상황에서 미리 볼 수 있도록 도와줍니다.
전환은 하나의 조건, 여러 조건 또는 조건이 없을 수도 있습니다. 전환에 조건이 없다면 Unity 에디터는 Exit Time 만을 고려하며, 종료 시간이 되면 전환이 발생합니다. 전환에 하나 이상의 조건이 있을 경우 전환이 트리거되려면 모든 조건이 충족되어야 합니다.
조건은 다음과 같이 구성됩니다.
전환에 Has Exit Time 이 활성화되어 있고 조건이 하나 이상일 경우 조건은 상태의 종료 시간 이후에만 체크됩니다. 전환이 애니메이션 특정 부분에서 발생할 수 있도록 해줍니다.