애니메이션 변수를 가져오는 방법

애니메이션 블루프린트 이벤트 그래프와 스레드 세이프 함수에서 캐릭터를 애니메이팅하기 위한 애니메이션 변수를 가져오는 방법입니다.

Choose your operating system:

Windows

macOS

Linux

언리얼 엔진 에서 캐릭터를 위한 애니메이션 블루프린트(Animation Blueprint)를 개발할 때, 다이내믹 무브먼트와 로코모션 변수 를 구현하면 애니메이션 동작 제어에 도움이 될 수 있습니다.

이 문서에서는 EventGraph 애니메이션 블루프린트 로직을 설정하여 자체 프로젝트에서 이러한 변수를 계산하는 방법에 대해 설명합니다. 또한, 이 문서에서는 property access 노드를 사용하여 스레드 세이프 블루프린트 함수에서 이러한 변수를 계산해 프로젝트 퍼포먼스와 안정성을 높이는 방법에 대해서도 설명합니다.

전제조건

  • [무브먼트 컴포넌트](understanding-the-basics\components\movement-components)
    가 있는 제어할 수 있는 3인칭 캐릭터.

필요하다면

[3인칭 템플릿 프로젝트](understanding-the-basics\projects-templates\third-person-template)
로 이러한 전제조건을 보완할 수 있습니다.

캐릭터 오브젝트 레퍼런스

대부분의 애니메이션 변수는 **EventGraph**에서 캐릭터의

[무브먼트 컴포넌트](understanding-the-basics\components\movement-components)
를 사용하여 계산할 수 있습니다. 캐릭터의 무브먼트 컴포넌트를 사용하여 다른 애니메이션 변수를 계산하려면, 레퍼런스 변수를 생성해야 합니다.

먼저, 캐릭터 애니메이션 블루프린트의 EventGraph 에서 Event Blueprint Initialization Animation 노드를 생성합니다.

Event Blueprint Initialize Animation 애니메이션 블루프린트 이벤트 그래프 노드

Event Initialization 노드로부터 애니메이션 블루프린트를 캐릭터의 블루프린트에 캐스팅하는 Cast 노드를 생성합니다.

워크플로 예시에서 캐릭터의 블루프린트는 3인칭 템플릿 프로젝트에 있는 BP_ThirdPersonCharacter 입니다.

그런 다음, Get Owning Actor 노드를 생성하고 Return Value 출력 핀을 Cast 노드의 Object 입력 핀에 연결합니다.

이벤트 그래프 애니메이션 블루프린트 노드를 3인칭 캐릭터 블루프린트에 캐스팅

다음으로, 캐스트 노드의 As Character 출력 핀을 우클릭 한 다음, 컨텍스트 메뉴에서 변수로 승격(Promote to Variable) 옵션을 선택하여 캐릭터 오브젝트 레퍼런스 변수를 생성합니다.

로직을 연결한 다음에는, 블루프린트의 EventGraphAnimGraph 에서 캐릭터 오브젝트 레퍼런스 변수에 액세스할 수 있습니다.

3인칭 블루프린트 애니메이션 블루프린트 노드 이벤트 그래프로의 캐스팅을 통해 캐릭터 레퍼런스 변수 설정

무브먼트 컴포넌트 레퍼런스

캐릭터 오브젝트(Character Object) 에서 캐릭터의 무브먼트 컴포넌트(Movement Component) 를 분리하려면, Get Character Movement 노드가 필요합니다. Set Character 변수 노드의 Character 출력 핀으로부터 Get Character Movement 노드를 생성합니다.

캐릭터 레퍼런스 노드로부터 Get Character Movement 노드를 생성하여 캐릭터 무브먼트 가져오기

다음으로, Character Movement 출력 핀을 우클릭 하고 컨텍스트 메뉴에서 변수로 승격을 선택하여 무브먼트 컴포넌트 레퍼런스 변수를 생성합니다.

이벤트 그래프에서 캐릭터 무브먼트 컴포넌트 레퍼런스 변수 설정

로직을 연결한 다음에는, 블루프린트의 EventGraphAnimGraph 에서 캐릭터 무브먼트 컴포넌트 레퍼런스 변수에 액세스할 수 있습니다.

전체 캐릭터 레퍼런스 및 무브먼트 컴포넌트 레퍼런스 애니메이션 블루프린트 이벤트 그래프

속도

캐릭터의 속도는 방향이나 속력이 필요한 애니메이션 계산에 유용한 값으로 사용할 수 있습니다.

EventGraph 에서 속도 변수를 생성하려면, 먼저 Event Blueprint Update Animation 노드를 생성합니다.

다음으로 무브먼트 컴포넌트 레퍼런스 변수를 EventGraph 에 추가합니다. 그런 다음, Get Velocity 노드를 사용하여 무브먼트 컴포넌트의 방향과 무브먼트 크기를 나타내는 벡터 값을 계산할 수 있습니다.

무브먼트 컴포넌트 레퍼런스 변수에서 Get Velocity 노드 생성하기

다음으로, Get Velocity 노드의 Velocity 출력을 우클릭 하고 컨텍스트 메뉴에서 변수로 승격 을 선택하여 속도 변수를 생성합니다.

로직을 연결한 다음에는, 블루프린트의 EventGraphAnimGraph 에서 속도(Velocity) 변수에 액세스할 수 있습니다.

이벤트 그래프의 전체 속도 레퍼런스 변수

여기서 Print String 노드는 프레임마다 업데이트된 캐릭터 속도의 X, YZ 값이 있는 디버그 메시지를 전송합니다.

속도 Print String 데모

스레드 세이프

먼저, 캐릭터의 애니메이션 블루프린트에서 새 스레드 세이프 함수를 생성합니다.

그런 다음, 그래프에서 우클릭 하여 Property Access 노드를 생성합니다.

Property Access 노드의 드롭다운 메뉴에서 Try Get Pawn Owner > Get Movement Component > Velocity 함수를 선택합니다. 그런 다음, 벡터 출력 핀을 우클릭하고 변수로 승격을 선택하여 속도 변수를 생성합니다.

Property Access 속도 가져오기 컨텍스트 메뉴

로직을 연결한 다음에는, 블루프린트의 EventGraphAnimGraph 에서 속도 변수에 액세스할 수 있습니다.

속도 스레드 세이프 그래프 전체 함수

프로젝트 런타임 중에 이 함수를 업데이트하려면, Blueprint Thread Safe Update Animation 그래프에 스레드 세이프 Velocity 함수를 추가합니다.

Blueprint Thread Safe Update 함수에 Velocity 스레드 세이프 함수 추가

캐릭터의 애니메이션 블루프린트가 이제 스레드 세이프 방식으로 캐릭터의 속도를 계산합니다.

캐릭터 속력

캐릭터 이동 속력은 달리기나 걷기 스테이트와 같은 캐릭터의 속력을 기반으로 애니메이션을 선택할 때 유용한 변수로 사용할 수 있습니다.

속도 변수로부터 Vector Length XY 노드를 생성하여 무브먼트 컴포넌트 속도에서 캐릭터 속력을 분리할 수 있습니다.

다음으로, Vector Length XY 노드의 Return Value 출력 핀을 우클릭 하고 컨텍스트 메뉴에서 변수로 승격 을 선택합니다.

Vector Length XY 노드를 생성하여 변수 함수에서 속력 분리

로직을 연결한 다음에는, 블루프린트의 EventGraphAnimGraph 에서 속력(Speed) 변수에 액세스할 수 있습니다.

여기서 Print String 노드는 프레임마다 업데이트된 캐릭터 속력 값이 있는 디버그 메시지를 전송합니다.

캐릭터 속력을 표시하는 디버그 Print String 데모

스레드 세이프

먼저, 캐릭터의 애니메이션 블루프린트에서 새 스레드 세이프 함수를 생성합니다.

다음으로, Property Access 노드를 생성하고 드롭다운 메뉴에서 Try Get Pawn Owner > Get Movement Component > Velocity 함수를 선택합니다.

Property Access 노드의 출력에서 Vector Length XY 노드를 생성하여 전방 및 측면 모션(XY 축)을 추출합니다.

캐릭터의 속력을 가져오는 스레드 세이프 함수

프로젝트 런타임 중에 이 함수를 업데이트하려면, Blueprint Thread Safe Update Animation 그래프에 스레드 세이프 Speed 함수를 추가합니다.

Blueprint Thread Safe Update 함수에 스레드 세이프 Speed 함수 추가

캐릭터의 애니메이션 블루프린트가 이제 스레드 세이프 방식으로 캐릭터의 속도를 계산합니다.

이동 한계치

캐릭터 이동이 애니메이션 재생을 트리거하는 시점을 제어하려면, 캐릭터 속력이 설정된 크기에 도달할 때 이동할 수 있게 해주는 이동 한계치(Movement Threshold) 변수를 생성해야 합니다.

EventGraph**의 캐릭터 속력 변수로부터 Greater Than or Equal To (>=)** 노드를 생성하고 값을 낮은 숫자로 설정합니다.

이 숫자는 0.1 같은 매우 작은 값이 될 수 있습니다.

Greater Than or Equal To (>=) 노드의 부울(Boolean) 출력 핀을 우클릭 하고 컨텍스트 메뉴에서 변수로 승격 을 선택합니다.

Greater Than or Equal To (>=) 노드를 추가하여 애니메이션 업데이트를 허용하는 최소 이동 설정

로직을 연결한 다음에는, 애니메이션 블루프린트의 EventGraphAnimGraph 에서 이동 한계치 변수에 액세스할 수 있습니다.

여기서 Print String 노드는 프레임마다 업데이트된 캐릭터 이동 한계치 변수 스테이트가 있는 디버그 메시지를 전송합니다.

Should Move 디버그 텍스트 데모

스레드 세이프

먼저, 캐릭터의 애니메이션 블루프린트에서 새 스레드 세이프 함수를 생성합니다.

스레드 세이프 그래프에서 Property Access 노드를 생성하고 노드를 Try Get Pawn Owner > Get Movement Component > Velocity 로 설정합니다. Vector Length XY 함수 노드로 전방 및 측면 이동을 추출합니다.

그런 다음, Greater Than or Equal To (>=) 노드를 사용하여 이동 애니메이션이 발생하지 않아야 하는 속력 한계치를 설정합니다

이 숫자는 0.1 같은 매우 작은 값이 될 수 있습니다.

Greater Than or Equal To (>=) 노드의 부울 출력 핀을 우클릭 하고 컨텍스트 메뉴에서 변수로 승격 을 선택합니다.

Should Move 스레드 세이프 함수

프로젝트 런타임 중에 이 함수를 업데이트하려면, Blueprint Thread Safe Update Animation 그래프에 스레드 세이프 Should Move 함수를 추가합니다.

Blueprint Thread Safe Update 함수에 Should Move 스레드 세이프 함수 추가

캐릭터의 애니메이션 블루프린트가 이제 스레드 세이프 함수에서 캐릭터의 이동 한계치 변수를 계산합니다.

점프 및 낙하

점프 및 낙하(Jumping and Falling) 변수를 사용하여 캐릭터의 AnimGraph 에서 점프와 착지 애니메이션을 재생할 시점을 결정할 수 있습니다.

먼저, 애니메이션 블루프린트의 EventGraph무브먼트 컴포넌트 변수를 생성합니다.

이제 무브먼트 컴포넌트 레퍼런스를 추가합니다 변수 노드로부터 IsFalling 함수 노드를 생성할 수 있습니다.

Is Falling 노드의 Return Value 출력 핀을 우클릭 하고 컨텍스트 메뉴에서 변수로 승격 옵션을 선택합니다.

Greater Than or Equal To (>=) 노드를 추가하여 결정

로직을 연결한 다음에는, 애니메이션 블루프린트의 EventGraphAnimGraph 에서 점프 및 낙하 변수에 액세스할 수 있습니다.

여기서 Print String 노드는 프레임마다 업데이트된 캐릭터 점프 및 낙하 변수 스테이트가 있는 디버그 메시지를 전송합니다.

Should Move 디버그 텍스트 데모

스레드 세이프

먼저, 캐릭터의 애니메이션 블루프린트에서 새 스레드 세이프 함수를 생성합니다.

Property Access 노드를 생성하고 노드를 Try Get Pawn Owner > Get Movement Component > IsFalling 으로 설정합니다.

Property Access 노드의 출력 핀을 우클릭 하고 컨텍스트 메뉴에서 변수로 승격 옵션을 선택합니다.

블루프린트 스레드 세이프 함수 Is Falling

프로젝트 런타임 중에 이 함수를 업데이트하려면, Blueprint Thread Safe Update Animation 그래프에 스레드 세이프 Is Falling 함수를 추가합니다.

Blueprint Thread Safe Update 함수에 스레드 세이프 Is Falling 함수 추가

캐릭터의 애니메이션 블루프린트가 이제 스레드 세이프 함수에서 캐릭터의 점프 및 낙하 스테이트 변수를 계산합니다.

EventGraph 레퍼런스

여기서 예시 워크플로에서 사용한 EventGraph 의 전체 Event Blueprint Update Animation 로직을 참조할 수 있습니다.

이벤트 그래프의 Full Update 함수