Unreal Engine 5 TPS Animation

garden cho·2025년 8월 6일
post-thumbnail

TIL(Today I Learned)

TPS 프로젝트에서 애니메이션 파트로 넘어가며 다룬 부분들을 적어보겠다.
TPS관련 템플릿을 참고해서 만들었고, 기존에 배웠던 기능들도 사용하여 템플릿과 똑같이 만드는 것은 최대한 피하였다.
먼저 변수들을 다루고, 이후 애니메이션 블루프린트에 사용한 기능들을 설명하였다.

Velocity(속도)

Velocity는 캐릭터가 이동하는 방향을 나타낸다.
기본적으로 벡터값이기 떄문에 크기와 방향을 가지고 있어 이동하는 방향도 나타내지만,
벡터의 길이로 이동하는 속도를 의미하기도 한다.

Ground speed(이동속도)

벡터 길이로 속도를 구한 뒤 캐릭터의 최대 걷기 속도로 나누어 0~1사이의 값으로 정규화해준 값이다.
이동 관련 블렌드 스페이스에서 사용한다.

Strafe(측면이동)

캐릭터의 Right Vector와 Velocity의 Normalize 값을 내적한 값으로 캐릭터가 이동하는 방향의 측면 값을 나타낸 값이다.
내적이 1이면 같은 방향 0이면 수직 -1이면 반대방향이다.

Direction angle(회전 방향 각도)

캐릭터에 Yaw 회전에 대한 마우스 입력값을 가져와 Turn Rate 변수를 만들었다.
애님 블루프린트에서 이 값을 보간하여 저장한 뒤 BlendSpace와 연결하여 달릴 때 마우스의 회전에 따라 캐릭터의 기울기를 변화시켰다.



Direction (회전 방향)

위의 Direction Angle과 이름은 비슷한데 Direction Angle은 컨트롤러가 회전할 때 생기는 각도의 차이를 의미하고
Direction은 캐릭터의 이동 방향과 회전 방향 간의 각도 차이를 의미한다.
Strafe 계산과 비슷하지만 각도법으로 표기하여 아래 값을 리턴한다.
↑ Forward (0°)
← Left (-90°)
→ Right (+90°)
↓ Backward (±180°)

Pitch / Yaw

Get Base Aim Rotation(컨트롤러 회전) 과 Get Actor Rotation (케릭터 회전)과의 차이를 계산해서 Pitch와 Yaw로 설정한다.
캐릭터 회전의 Pitch는 변하지 않기 떄문에 컨트롤러 회전 값과 같은 값을 갖게 되고,
Yaw는 컨트롤러 회전과 캐릭터 회전과의 차이로 설정된다.

Pitch와 Yaw는 캐릭터 에임 오프셋에 사용하였다.
에임 오프셋은 상체를 회전시켜 캐릭터의 시선방향에 자연스럽게 맞추는 시스템으로 TPS게임에서 주로 사용된다.

Locomotion

걷기와 관련해서 처음에는 blend space를 사용하였다가 애니메이션이 튀는걸 보정하기 힘들어서 Lyra Template과 비슷한 방식으로 바꾸었다.
movement input에 따라 앞 뒤 좌 우를 열거형으로 만들고, 각 상태에 따라 애니메이션을 다르게 재생시킨다. 이 때 하체를 방향을 보정하기 위해 Orientation Warping을 사용하였다.

Animation Monatge

무기 장착, 발사, 재장전 등은 애니메이션 몽타주로 재생한다.
노티파이에서 사운드를 재생하고, 상체와 하체의 애니메이션을 다르게 재생하기 위해 슬롯을 UpperBody로 설정한다.

애님 블루프린트에서 슬롯을 생성하고 상체 애니메이션과 하체 애니메이션을 Layered Blend per bone에 연결하여 준다.
Layer Blend per bone에서 분기 필터를 추가하고 spine_01으로 본 이름을 설정하여 spine_01을 기준으로 상체와 하체 애니메이션을 분리한다.

0개의 댓글