본문 바로가기
[ CODING STUDY ]/》언리얼엔진5 공부

언리얼엔진5 35장 [애니메이션]

by MRG 2023. 2. 25.
728x90
반응형

▣ 안녕하세요. 

이번장에서는 키를 누르면 이동하면서 애니메이션이 재생되는 과정을 공부해 보겠습니다. 

New State Machine, Get Velocity, Vector Length를 사용합니다. 

 

▣ 먼저 Epic Games에서 Paragon: Reventant에셋을 다운로드합니다. 

 

▣ 그리고 블루프린트폴더에서 Character 블루프린트를 생성하고 이름은 Player로 지정합니다. 

 

▣ Game Mode Base도 생성합니다. 

이름은 BP_GameMode로 지정합니다. 

 

▣ World Settings에서 GameMode Oeverride와 Default Pawn Class를 지정합니다. 

 

▣ Player에 들어가서 Mesh를 클릭합니다. 

그리고 Detalis메뉴에 보면 Mesh라는 메뉴가 있습니다. 

Skeletal Mesh Asset을 선택합니다. 

 

▣ Revenan으로 지정하고 위치와 회전값을 캡슐 모양과 보는 방향에 맞게 위치 및 회전을 수정합니다. 

 

▣ SpringArm과 Camera를 추가하고 SpringArm을 이동하여 카메라의 위치를 지정합니다. 

 

▣ 씬에서 플레이버튼을 클릭하면 이렇게  TPS게임처럼 캐릭터가 보이는 걸 확인할 수 있습니다. 

 

Project Settings에 Input에 Axis Mappings를 추가합니다. 

 

▣ 위에 이미지처럼 이동 노드를 완성해 주시고

 

▣ 마우스 회전 노드도 완성합니다. 

SpringArm에 Detalis에 Camera Settings에 use Pawn Control Rotation을 체크하여 위아래 마우스 회전까지 지정합니다. 

 

▣ 이동 및 마우스 회전을 완성했습니다. 자세한 내용은 저번장을 참고해 주세요.

이제 애니메이션에 대해 공부해 보겠습니다.

 

▣ BluePrints 폴더에서 오른쪽마우스를 클릭하고 Animation에서 Animation Blueprint를 생성합니다. 

 

▣ 그럼 이런 창이 나오는데 이건 애니메이션에 뼈대를 정하는 창입니다.

Revenat_Skeleton으로 선택하고 Create로 생성합니다. 

이름은 Player_Ani로 지정합니다. 

 

▣ 그리고 더블클릭하면 사람 뛰는 블록이 있는데 거기 옆에 오른쪽마우스를 클릭하고 

State Machine이라고 검색합니다. 

 

▣ 그리고 마우스를 드래그하여 사람모양 블록과 연결합니다. 

스테이트 머신은 다양한 애니메이션 흐름을 그래프로 표현하고 쉽게 제어할 수 있는 기능, 프로세스를 크게 단순화시켜 주는 도구입니다.

 

https://docs.unrealengine.com/4.27/ko/AnimatingObjects/SkeletalMeshAnimation/StateMachines/

 

스테이트 머신

State Machine, 스테이트 머신으로 스켈레탈 애니메이션을 여러 상태별로 나누어, 상태 전환시 일어나는 블렌딩을 완벽히 제어할 수 있습니다.

docs.unrealengine.com

 

  스테이트 머신을 더블클릭하면 Entry블록이 하나 있는데 여기서 오른쪽에 보면

Asset Bro라고 시작하는 메뉴가 있는데 검색창에 Idle이라고 검색을 하고 애니메이션을 드래그합니다. 

그럼 이렇게 생성이 됩니다.

 

▣ Entry블록에 테두리 쪽을 클릭하고 드래그하면 화살표가 나오는데 이걸 드래그하여 연결합니다. 

그럼 왼쪽에 미리 보기 메뉴에 애니메이션이 Idle로 변경되었습니다. 

컴파일 저장 후

 

▣ Player로 돌아가서 Details메뉴에 Animation에 Anim Class를 아까 생성했던 Player_Ani로 지정합니다. 

컴파일 저장 후 

 

▣ 씬에서 플레이버튼을 클릭하면 Idle 애니메이션으로 시작되는 걸 확인할 수 있습니다. 

 

▣ 다시 스테이트 머신으로 돌아가서 jog_Fwd애니메이션을 추가합니다. 

 

Idle과 jog_Fwd를 서로를 드래그해서 연결합니다. 

그럼 화살표 위에 동그란 모양이 나옵니다. 

이건 어떤 상태일 때 넘어갈지에 대한 상태 표시입니다. 

 

▣ Player_Ani에 Event Graph로 가면 코드가 있는데 

Get Velocity함수와 Vector_Length함수를 사용하여 노드를 완성합니다. 

 

https://docs.unrealengine.com/4.26/en-US/BlueprintAPI/Utilities/Transformation/GetVelocity/

 

Get Velocity

Get Velocity

docs.unrealengine.com

https://docs.unrealengine.com/4.26/en-US/BlueprintAPI/Math/Vector/VectorLength/

 

VectorLength

VectorLength

docs.unrealengine.com

▣ Get Velocity함수는 속도를 얻는 함수이고  Vector_Length는 벡터의 길이는 받는 함수입니다.

다시 말해 MovementComponent가 있는 경우 루트 구성 요소의 속도(cm/s(Unreal Units/second) 단위)를 반환하기 때문에 키를 누르면 반환값이 들어가고 그 값을 Vector_Length함수로 길이를 구하여  0보다 크게 되면 is_move라는 변수에 SET 하여 값을 대입하는 구조의 노드입니다. 

 

 

▣ 아까 연결했던 Idle -> Jog_Fwd로가는 원모양을 더블클릭하고 Is Move에 변수를 연결합니다.

그럼 키를 누르고 이동하게 되면 is_Move가 true가 되기 때문에 Jog_Fwd가 재생됩니다. 

반대로 

 

▣ Jog_Fwd에서 Idle로 넘어가는 노드도 완성합니다. 

컴파일 저장 후 

 

▣ 이동하면 애니메이션이 재생되는 걸 확인할 수 있습니다.

728x90
반응형

댓글