unreal 5기

260114 언리얼엔진 본캠프 108일차 GASP(3)

parkjinnam 2026. 1. 14. 20:27

GASP를 개조해 보자

지난 글에서는 GASP의 블르프린트인 SandboxCharacter_CMC 에셋이 GCharacterBase를 상속받도록 하고 이 SandboxCharacter_CMC의 이름을 BP_GASP_Base로 변경한 후 이를 상속받는 BP_Paradin을 만들었다. 테스트한 결과 GASP의 기본 애니메이션이 잘 적용됨을 알 수 있다.

기본적인 움직임 애니메이션이 잘 적용되고 있다.

 

하지만 이대로 최종 프로젝트를 진행하기에는 어려움이 있다. 우리의 최종 프로젝트는 엘든링을 벤치마크한 소울류 게임을 만들 예정인데 캐릭터의 평상시의 움직임은 기존의 백뷰 시점으로 플레이어의 카메라가 바라보는 방향이 정면이 되어 방향키를 입력 시 캐릭터가 그 방향으로 회전 후 이동하는 방식을 이용하지만 현재 GASP의 애니메이션이 적용된 상태에서는 캐릭터가 회전하지 않고 카메라가 바라보는 방향을 캐릭터가 응시한 체 옆걸음과 뒷걸음을 하는 것을 볼 수 있다. 이를 한번 수정해 보자

 

GASP의 블루프린트 구조

GASP의 PlayerCharacter인 SandboxCharacter_CMC는 플레이어의 인풋이 발생하면 해당 인풋에 따라서 AddMovement를 호출해서 움직이는 것이 아닌 단순하게 PlayerInputState라는 구조체에 bool 변수의 값을 변화시키는 작업만 진행한다.

IA_Walk, IA_Sprint에 따라서 각각 값들을 변경시키는 블루프린트

 

PlayerInputState에는 각각 WantsToWalk와 같이 플레이어의 입력 의도가 bool값으로 달려 있다. 이 값을 토대로 캐릭터의 상태를 결정하게 되는데 이 상태에 맞춰서 실제 MaxWalkSpeed와 같은 수치를 조절하게 된다.

 

우리가 원하는 것을 위해선?

그렇다면 우리는 CharacterRotation이 업데이트되는 부분을 찾아서 그 부분을 수정해 주면 된다.

찾아부려따
우리가 원하는 방향으로 수정한 모습

 

사진을 보면 알겠지만 매 Tick마다 CMC전에 Rotation과 Movement를 먼저 업데이트하게끔 되어있다.(BeginPlay를 보면 확인 가능하다.) 그리고 문제의 Rotation 함수를 들어가 보면 아래 사진처럼 되어있다. 여기서 원래는 WantsToStrafe, WantsToAim 중 하나가 true이면 카메라 방향을 바라보게 하는 Use Controller Desired Rotation을 켜주고 입력 방향으로 캐릭터를 회전시키는 Orient Rotation To Movement를 끄게 되어있다. 이를 Aim의 여부에만 작동되게 노드를 수정해서 확인해 보자.

 

중간중간 aim을 킬 때마다 원하는 움직임이 적용되었다.

 

내일은 GASP의 IMC와 애니메이션 데이터에셋을 수정해서 구르기 애니메이션을 한번 추가해보려고 한다.