Game Engine/Unreal Engine 4

[ Unreal Engine 4 ] Custom Character 를 언리얼 ThirdPersonCharacter 템플릿으로 불러오기

ted0505 2021. 12. 1. 13:20
목차

1. ThirdPersonCharacter 템플릿 동작방식 이해하기
2. Custom Character 를 언리얼 ThirdPersonCharacter 템플릿으로 불러오기
2-1. 캐릭터에 애니메이션 넣기
2-3. Blendspace 사용하기

#ThirdPersonCharacter 템플릿 동작방식 이해하기

ThirdPersonCharacter BluePrint

1. 키보드 입력에 따른 캐릭터의 움직임과 회전

ThirdPersonCharacter 는 키보드의 입력에 의해, 움직이고 회전한다. 

그렇다면, 이 키보드 입력 값에 따른 움직임과 회전은 어떻게 줄까?

 

ThirdPersonCharacter Blueprint

움직임과 회전은 ThirdPersonCharacter Blueprint 로 만들어져 있다.

Movement Input Logic 

- 이벤트 ( Input Axis MoveForward ) 가 발생하면, Add Movement input 함수를 실행한다.여기서 Add Movement input 함수는 이벤트에서 발생 된 크기 값 (Scale Value)을 받고, 계산된 방향 값(World Direction, 즉, 캐릭터가 옆을 보고 있는지, 앞을 보는지) 을 받는다.

 

즉, Scale value 는 캐릭터의 움직임을 뜻하고, World Direction 은 캐릭터의 방향을 뜻한다.

 

그렇다면, 이벤트는 무엇이고 크기 값은 무엇인가 ?

Project Setting -> input

프로젝트 설정 -> 인풋을 들어가면 이벤트가 미리 만들어져있다. 

이벤트에 대한 값

즉, 예를 들어 W키를 입력하면 이 이벤트가 발생하고, 1.0이라는 크기 값을 보내는 것이다.


2. 키보드 입력에 따른 캐릭터의 점프

위와 마찬가지로, 이벤트가 발생하면 함수를 실행한다.

스페이스 바를 누르면 jump 함수가 실행되고, 떼면 Stop jumping 함수가 실행된다.

 

* roll pitch yaw : 기존의 X, Y, Z 축은 사용하는 툴마다, 왼손 법칙이냐 오른속 법칙이냐에 따라 기준이 달랐기 때문에, 직관적으로 회전 값만으로 따질 수 있는 기준을 만들자해서 나온 것이다. 


#Custom Character 를 언리얼 ThirdPersonCharacter 템플릿으로 불러오기

 

##Custom 캐릭터에 애니메이션 주기

 필요 재료 : 커스텀 캐릭터 ( 믹사모 등 )

 

캐릭터에 애니메이션을 주고, 움직이기 위해서는 기본적으로 2가지의 Blueprint가 필요하다.

첫번째는, 여러가지 인풋 장치 ( 키보드, 마우스, 게임패드 등등 ) 에 따라 캐릭터를 움직이기 위한 Character BP.

두번째는, 이 캐릭터가 움직일 때 모션을 주기위한 AnimBP.

캐릭터에 애니메이션을 주고 움직이기 위한 CharacterBP, AnimBP

 

Character Blueprint

 

Character BP에 해당 캐릭터에 애니메이션을 주기 위해 선택 할 수 있는 모드와 애니메이션 클래스가 있다.

AnimBP로 애니메이션을 줄 것 이기 때문에, 블루프린트 모드로 선택하고 해당 캐릭터 애니메이션 BP를 선택해준다.

 

AnimBP, State Machine

AnimBP -> AnimGraph 에서 바로 애니메이션을 줄 수 있지만, 걷다가 점프를 하는 경우처럼, 여러 조건과 상태에 맞는 애니메이션을 주어야 하기 때문에 StateMachine 를 통해서 애니메이션을 준다.

 

##StateMachine

StateMachine

StateMachine은 여러 조건에 맞는 애니메이션을 주는 것이기에 상태와 조건을 설정 해줄 수 있다.

애니메이션 상태 블럭 : 애니메이션 애셋을 넣을 수 있음.

 

###조건 만들기 위한 데이터 값 받기

캐릭터가 정지 상태에서 걷는 상태로 바뀔 때 애니메이션을 바꿔주어야하기 때문에, 캐릭터의 속력 값을 받고 그에 따른 조건을 만들어주어야 한다.

ThiedPersonCharacter의 속력 값을 가져오는 로직

###조건 만들어 주기


##BlendSpace 로 애니메이션 블렌드하기

위와 같은 방식으로 애니메이션을 줄 수 있지만, 좀 더 자연스러운 애니메이션을 주기 위해 BlendSpace를 사용하면 좋다.

 

블렌드스페이스

블렌드 스페이스에서 걷는 애니메이션, 뛰는 애니메이션을 적절히 블렌드 시켜준다.

 

State 블럭에 블렌드 스케이프를 추가해준다.