▣ 안녕하세요.
이번장에서는 키를 누르면 이동하면서 애니메이션이 재생되는 과정을 공부해 보겠습니다.
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/
▣ 스테이트 머신을 더블클릭하면 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/
https://docs.unrealengine.com/4.26/en-US/BlueprintAPI/Math/Vector/VectorLength/
▣ 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로 넘어가는 노드도 완성합니다.
컴파일 저장 후
▣ 이동하면 애니메이션이 재생되는 걸 확인할 수 있습니다.
'[ Unreal5 ] > - 언리얼엔진5 공부' 카테고리의 다른 글
언리얼엔진5 37장 [물리, Physics, Gravity] (0) | 2023.05.19 |
---|---|
언리얼엔진5 36장 [뷰포트, 퀄리티설정] (0) | 2023.05.17 |
언리얼엔진5 34장 [Default Land Movement Mode, Set Movement Mode] (0) | 2023.02.23 |
언리얼엔진5 33장 [마우스 회전] (0) | 2023.02.21 |
언리얼엔진5 32장 [Jump] (0) | 2023.02.21 |
댓글