트랜지션 구성
스테이트 머신의 구조를 정의하는 스테이트 간 링크인 트랜지션 을 생성하여 어떤 스테이트가 다른 스테이트와 블렌딩될 수 있는지를 제어할 수 있습니다.

트랜지션을 생성하려면 스테이트의 경계에서 다른 스테이트로 드래그합니다. 이 예시에서는 Idle 스테이트 가 Run 스테이트 와 양방향으로 연결되어 있는데, 이는 기본 로코모션 스테이트 머신의 일반적인 구성입니다. 트랜지션은 단방향이므로 두 스테이트를 서로 트랜지션하게 하려면 각 방향에 대한 트랜지션을 생성해야 합니다.

트랜지션 룰
트랜지션은 스테이트 간 블렌딩의 구조를 제어하는 한편, 트랜지션 룰 은 스테이트가 트랜지션할 수 있는 시기를 제어합니다. 즉, 트랜지션을 정의하는 것만으로는 부족하며 트랜지션이 발생하는 시기와 방법도 정의해야 합니다.
트랜지션 룰은 트랜지션을 생성할 때 자동으로 생성됩니다. 스테이트와 마찬가지로 트랜지션 룰은 내 블루프린트(My Blueprint) 패널을 통해서나 스테이트 머신 그래프에서 트랜지션 아이콘 을 더블클릭하여 액세스하고 확인할 수 있습니다.

트랜지션 룰 내에서 Boolean(true 또는 false) 값을 출력하는 용도로 확인 및 비교를 위한 다양한 블루프린트 로직을 생성할 수 있습니다. true 값은 스테이트가 다음 스테이트로 트랜지션할 수 있는지 결정하는 데 사용됩니다.
예를 들어, Idle에서 Run으로 트랜지션했다가 다시 Idle로 돌아가는 경우, 로직은 아래와 같을 것입니다. 이 예시에서는 bool 변수를 사용하여 트랜지션 룰을 제공합니다. 디폴트 스테이트로 돌아갈 때는 역 bool을 사용합니다.

트랜지션 룰은 일반적으로 무브먼트 컴포넌트와 다른 캐릭터 변수로부터 정보를 받습니다. 제어할 수 있는 캐릭터에 대한 일반적인 프로퍼티를 가져오는 방법에 대해 자세히 알아보려면 애니메이션 변수를 가져오는 방법 페이지를 참조하세요.
의도한 로직으로 변수를 올바르게 구성하고 나면, 게임플레이 중에 그러한 변수 조건이 충족되면 트랜지션이 발생합니다.

트랜지션 함수
트랜지션 룰 그래프 내에서 다음과 같은 특화된 트랜지션 전용 함수를 사용하여 로직을 보강할 수 있습니다.
이름 | 이미지 | 설명 |
---|---|---|
Current State Time | ![]() |
이 스테이트 머신 내에서 현재 활성화된 스테이트의 현재 경과 시간(초)을 가져옵니다. 이 출력은 스테이트 머신의 활동 표시기 와 비슷한 정보를 제공합니다. ![]() |
Get Current State Name | ![]() |
이 스테이트 머신 내에서 현재 활성화된 스테이트 이름을 가져옵니다. |
Get Relevant Anim Time | ![]() |
이 트랜지션이 진행될 스테이트 내에서 가장 연관성이 높은 애니메이션의 현재 경과 시간(초)을 가져옵니다. 스테이트에는 연관성이 같은 애니메이션이 여러 개 있을 수 있으므로, 연관성 관련 함수에서 그러한 애니메이션을 확인하고 사용하지 않도록 비활성화할 수 있습니다. 이렇게 설정하려면 스테이트 그래프를 열고 제외하려는 애니메이션 노드(시퀀스 플레이어, 블렌드 스페이스, 에임 오프셋 등)를 선택한 다음 디테일(Details) 패널에서 연관성 테스트에서 무시(Ignore for Relevancy Test) 를 활성화합니다. ![]() |
Current Time | ![]() |
이전 스테이트로부터 애니메이션의 현재 경과 시간(초)을 가져옵니다. 이 함수는 연관성이 아니라 직접 특정 애니메이션을 참조하려는 경우에 유용합니다. |
Get Relevant Anim Time Remaining | ![]() |
이 트랜지션이 진행될 스테이트 내에서 가장 연관성이 높은 애니메이션의 현재 남은 시간(초)을 가져옵니다. |
Time Remaining | ![]() |
이 트랜지션이 진행될 스테이트 내에서 애니메이션의 현재 남은 시간(초)을 가져옵니다. 이 함수는 연관성이 아니라 직접 특정 애니메이션을 참조하려는 경우에 유용합니다. |
애니메이션 노티파이 함수
트랜지션 그래프 내에서 사용할 수 있는 애니메이션 노티파이 함수도 몇 가지 있습니다. 트랜지션 그래프를 우클릭하고 Was Anim Notify… 함수를 찾아서 이러한 함수를 추가할 수 있습니다.

이름 | 설명 |
---|---|
Was Anim Notify Name Triggered… | 이름으로 지정된 스켈레톤 노티파이가 이전 틱에서 트리거된 경우 true 를 반환합니다. |
Was Anim Notify State Active… | 클래스로 지정된 노티파이 스테이트가 이전 틱에서 활성화된 경우 true 를 반환합니다. |
Was Anim Notify Triggered… | 클래스로 지정된 노티파이가 이전 틱에서 활성화된 경우 true 를 반환합니다. |
노티파이 함수 확인 간의 주요한 차이점은 검색을 수행하는 위치입니다.
- 모든 스테이트에서(In any state) - 모든 활성 스테이트 머신에서 노티파이를 검색합니다.
- 소스 스테이트에서(In the source state) - 이전 활성 스테이트(트랜지션 소스 스테이트)에서 노티파이를 검색합니다.
- 스테이트 머신에서(In the State Machine) - 특정 스테이트 머신에서 노티파이를 검색합니다.
트랜지션 중단
트랜지션 중에 다른 스테이트가 활성화되면 트랜지션이 '중단'되고 대신 새 스테이트로 트랜지션됩니다. 이러한 중단이 발생할 때 특정 애니메이션 노티파이를 중단에 링크할 수 있습니다. 이렇게 하면 중단이 발생했을 때 링크된 노티파이가 실행됩니다.
트랜지션 중단 노티파이 행동을 설정하려면, 트랜지션을 선택하고 디테일 패널에서 트랜지션 중단(Transition Interrupt) 프로퍼티를 찾습니다.

중단에 링크할 노티파이(Notify) 또는 노티파이 스테이트 클래스(Notify State Class) 를 지정할 수 있습니다. 노티파이 스테이트 를 사용하는 경우 그 중단은 후속 프레임에서 순서대로 시작 및 끝 노티파이 이벤트를 실행합니다.
다른 프로퍼티는 몽타주 노티파이 페이지에서 확인할 수 있습니다.
트랜지션 블렌드 타입
스테이트 트랜지션 방법을 결정할 때 사용할 수 있는 주요 스테이트 트랜지션 블렌딩 타입은 표준 블렌드(Standard Blend), 관성화(Inertialization), 커스텀(Custom) 이렇게 세 가지입니다. 트랜지션을 선택하고 디테일 패널에서 블렌드 로직(Blend Logic) 프로퍼티를 찾아 이러한 타입을 선택할 수 있습니다.

표준 블렌드
표준 블렌드는 디폴트 트랜지션 옵션으로, 기간, 커브 및 기타 기본 컨트롤에 대한 세팅을 포함합니다. 트랜지션을 선택하고 디테일 패널에서 블렌드 세팅(Blend Settings) 카테고리를 찾아 이러한 세팅을 확인하고 조정할 수 있습니다.

이름 | 설명 |
---|---|
트랜지션 크로스페이드 공유(Transition Crossfade Sharing) | 이 드롭다운 메뉴를 사용하여 서로 다른 트랜지션 간에 블렌드 세팅 프로퍼티를 공유할 수 있습니다. 새 공유 세팅을 생성하려면 공유로 승격(Promote to Shared) 을 클릭하고 세팅 이름을 입력한 다음, Enter 를 누릅니다. 이제 다른 트랜지션에서 이 세팅에 액세스할 수 있습니다. 세팅은 완전히 공유되므로 하나의 트랜지션에서 세팅을 편집하면 다른 모든 트랜지션에도 영향을 줍니다. |
기간(Duration) | 트랜지션에 걸리는 시간 길이(초)입니다. |
모드(Mode) | 이 트랜지션과 블렌딩할 때 사용할 커브 타입입니다. 각 옵션에서 Ctrl + Alt 를 누르고 있으면 커브 셰이프의 프리뷰가 표시됩니다. |
커스텀 블렌드 커브(Custom Blend Curve) | 모드(Mode) 를 커스텀(Custom) 으로 설정한 경우, 여기서 이 트랜지션과 블렌딩할 때 커브 셰이프로 사용할 커스텀 생성 커브 에셋을 지정합니다. |
블렌드 프로파일(Blend Profiles) | 이 트랜지션 중에 특정 본을 다른 본보다 빠르게 블렌딩하고 싶은 경우, 여기서 선택적으로 블렌드 프로파일을 지정할 수 있습니다. |
관성화
단순히 하나의 스테이트를 다른 스테이트로 블렌딩하는 대신, 관성화(Inertialization) 를 사용하면 새 애니메이션으로 전환할 때 발생하는 애니메이션 속도와 가속도를 사용하여 모션을 전달할 수 있습니다. 자세한 내용은 관성화 문서를 참조하세요.
관성화를 블렌드 타입으로 사용하는 경우, 애님 그래프(Anim Graph)에서 Inertialization 노드 도 사용해야 합니다. 관성화는 스테이트 머신 평가 뒤에 배치되어야 합니다.

관성화는 스테이트에서 보더링하는 데 사용된 애니메이션에 따라 다르므로, 모든 트랜지션에서 좋은 결과가 나오는 것은 아닙니다. 관성화 블렌딩을 사용할 때는 다음과 같은 몇 가지 일반적인 규칙을 염두에 두어야 합니다.
- 블렌드 기간은 짧아야 하며, 0.4초 미만이 가장 적합합니다.
- 포즈가 극단적으로 다를 때는 관성화를 사용하면 안 됩니다.
커스텀
커스텀 블렌드는 자체 애님 그래프 레이어에서 그래프를 만들고 커스터마이징할 수 있는 블렌드로, 표준 블렌드 세팅에 따라 기간과 커브 셰이프가 결정됩니다.
블렌드 로직(Blend Logic) 이 커스텀(Custom) 으로 설정된 경우, 드롭다운 메뉴 옆에 있는 블렌드 그래프 편집(Edit Blend Graph) 을 클릭하거나 내 블루프린트 에서 커스텀 블렌드 그래프를 더블클릭하여 그래프를 열 수 있습니다.

커스텀 블렌드 그래프 내에서 다음과 같은 특별 함수를 사용하여 그래프에 전달할 트랜지션 시간과 스테이트 웨이트 정보를 읽을 수 있습니다.
이름 | 이미지 | 설명 |
---|---|---|
State Weight | ![]() |
이전 스테이트의 블렌드 웨이트를 가져옵니다. 트랜지션 기간이 진행됨에 따라 이 숫자는 1 에서 0 으로 점차 감소합니다. |
Get Transition Time Elapsed | ![]() |
지정된 트랜지션의 경과 시간(초)을 가져옵니다. |
Get Transition Time Elapsed (ratio) | ![]() |
지정된 트랜지션에 대한 크로스페이드 기간의 비율로 경과 시간을 가져옵니다. 즉, 트랜지션 기간이 진행됨에 따라 이 숫자는 0 에서 1 로 점차 증가합니다. |
Get Transition Crossfade Duration | ![]() |
지정된 트랜지션의 크로스페이드 기간을 가져옵니다. 이는 블렌드 세팅(Blend Settings) > 기간(Duration) 프로퍼티에 사용된 숫자입니다. |
커스텀 블렌드를 사용하여 다양한 블렌딩 로직을 생성할 수 있습니다. 간단한 예시로, Get Transition Time Elapsed (ratio) 함수와 함께 노멀 Blend 노드를 사용하여 표준 블렌드를 리플리케이트할 수 있습니다.

트랜지션 프로퍼티
트랜지션에는 다음과 같은 프로퍼티가 포함되어 있습니다.

이름 | 설명 |
---|---|
스테이트의 시퀀스 플레이어에 따른 자동 규칙(Automatic Rule Based on Sequence Player in State) | 활성화하면, 이전 스테이트에서 가장 연관성 높은 애니메이션이 종료될 때 이 트랜지션이 자동으로 발생합니다. 블렌드 기간도 트랜지션 시간에 영향을 미치므로 애니메이션 길이가 2.0 초이고 트랜지션 기간이 0.5 초인 경우, 1.5 초가 경과한 뒤에 트랜지션이 발생합니다. |
유효한 마커 규칙이 필요한 동기화 그룹 이름(Sync Group Name to Require Valid Markers Rule) | 여기서 동기화 그룹 이름을 지정하면, 현재 스테이트에 유효한 싱크 마커(Sync Markers)가 있는 애니메이션이 포함된 경우에만 이 트랜지션이 사용됩니다. 노멀 트랜지션 룰은 여전히 적용됩니다. |
우선순위 순서(Priority Order) | 이 트랜지션의 우선순위 순서입니다. 여러 개의 트랜지션이 동시에 true가 되면 우선순위가 가장 낮은 트랜지션이 선택됩니다. |
양방향(Bidirectional) | 이 세팅은 지원되지 않으므로 현재 작동하지 않습니다. |
블렌드 로직(Blend Logic) | 사용할 트랜지션 블렌드 타입입니다. |
트랜지션 룰 공유(Transition Rule Sharing) | 이 드롭다운 메뉴를 사용하여 서로 다른 트랜지션 간에 트랜지션 그래프 를 공유할 수 있습니다. 새 공유 세팅을 생성하려면 공유로 승격(Promote to Shared) 을 클릭하고 세팅 이름을 입력한 다음, Enter를 누릅니다. 이제 다른 트랜지션에서 이 세팅에 액세스할 수 있습니다. 그래프는 완전히 공유되므로 하나의 트랜지션에서 그래프를 편집하면 다른 모든 트랜지션에도 영향을 줍니다. |
트랜지션 크로스페이드 공유(Transition Crossfade Sharing) | 이 드롭다운 메뉴를 사용하여 서로 다른 트랜지션 간에 블렌드 세팅 프로퍼티를 공유할 수 있습니다. 새 공유 세팅을 생성하려면 공유로 승격(Promote to Shared) 을 클릭하고 세팅 이름을 입력한 다음, Enter 를 누릅니다. 이제 다른 트랜지션에서 이 세팅에 액세스할 수 있습니다. 세팅은 완전히 공유되므로 하나의 트랜지션에서 세팅을 편집하면 다른 모든 트랜지션에도 영향을 줍니다. |
기간(Duration) | 트랜지션에 걸리는 시간 길이(초)입니다. |
모드(Mode) | 이 트랜지션과 블렌딩할 때 사용할 커브 타입입니다. 각 옵션에서 Ctrl + Alt 를 누르고 있으면 커브 셰이프의 프리뷰가 표시됩니다. |
커스텀 블렌드 커브(Custom Blend Curve) | 모드(Mode) 를 커스텀(Custom) 으로 설정한 경우, 여기서 이 트랜지션과 블렌딩할 때 커브 셰이프로 사용할 커스텀 생성 커브 에셋을 지정합니다. |
블렌드 프로파일(Blend Profiles) | 이 트랜지션 중에 특정 본을 다른 본보다 빠르게 블렌딩하고 싶은 경우, 여기서 선택적으로 블렌드 프로파일을 지정할 수 있습니다. |
트랜지션 중단(Transition Interrupt) | 트랜지션 중단에 대한 세팅이 포함되어 있습니다. |
트랜지션 이벤트 시작(커스텀 블루프린트 이벤트)(Start Transition Event (Custom Blueprint Event)) | 커스텀 블루프린트 이벤트(Custom Blueprint Event) 필드에 사용된 이름으로 스켈레톤 노티파이를 생성합니다. 이 노티파이는 이 트랜지션이 시작되면 실행됩니다. 일반 스켈레톤 노티파이와 마찬가지로 애니메이션 블루프린트의 이벤트 그래프 에서 이를 생성하여 이벤트에 액세스할 수 있습니다. |
트랜지션 이벤트 종료(커스텀 블루프린트 이벤트)(End Transition Event (Custom Blueprint Event)) | 커스텀 블루프린트 이벤트(Custom Blueprint Event) 필드에 사용된 이름으로 스켈레톤 노티파이를 생성합니다. 이 노티파이는 이 트랜지션이 끝나면 실행됩니다. |
트랜지션 이벤트 중단(커스텀 블루프린트 이벤트)(Interrupt Transition Event (Custom Blueprint Event)) | 커스텀 블루프린트 이벤트(Custom Blueprint Event) 필드에 사용된 이름으로 스켈레톤 노티파이(Skeleton Notify)를 생성합니다. 이 노티파이는 트랜지션이 중단되면 실행됩니다. |