Aim Offset
슈팅 게임에서는 마우스의 움직임에 따라 캐릭터가 대상 지점을 바라보는 애니메이션을 사용한다. 캐릭터 전신이 바라보는 지점을 향해 회전하는 것이 아니라, 상체만 회전하는 것이다. 예를 들면 아래 영상과 같다.
이를 언리얼 엔진에서는 Aim Offset 이라고 한다.
bUseControllerRotationYaw = false
로 Pawn을 컨트롤러의 Yaw Rotation로 회전되지 않게 끔 했을 때, 사용할 수 있다. (true로 하면 앞서 말한 컨트롤러의 입력에 따라 캐릭터의 전신이 통째로 회전한다.)
구현
만들기 위한 과정은 공식 홈페이지에 자세히 나와있다. 언리얼이 제공하는 AnimStarterPack 에셋을 기준으로 되어있다.
(버전, 언어별로 바꿔서 보자. 한글로도 잘 나와있다.)
워낙 빠짐없이 설명이 잘되어있어서 부연 설명이 필요 없겠지만, 간단하게 말하면 다음과 같은 과정이다.
- 1프레임만으로 구성된 에임 포즈 생성(정면 가운데, 정면 아래, 정면 위, 왼쪽 가운데, 왼쪽 아래, 왼쪽 위 등등 9방향에 대해서 만든다.)
- 에임 오프셋 에셋을 생성하고, 파라미터 값(Yaw, Pitch)를 조정한 뒤 포즈를 배치한다.
- 캐릭터 블루프린트에서 알맞게 구현해준다.
위 문서에서는 Yaw, Pitch 값 설정도 모두 블루프린트에서 하고 있는데, C++로 해도 무방하다.
번외
위 문서에서는 1번 과정에서, 적절한 포즈 프레임을 찾아서 앞, 뒤 프레임을 잘라 에임 포즈를 만드는 방식을 사용하고 있다. 언리얼 엔진 5 에서는 포즈를 만드는 기능을 제공하고 있기 때문에, 번거로운 이 방식을 사용하지 않아도 된다.
애니메이션 에디터 창에서 위 사진 메뉴를 이용하면 해당 프레임으로 된 에임 포즈를 만들 수 있다.
듣고 있는 강의에서는 캐릭터를 처음부터 만들어서 진행하고 있는데, 무기 착용 시와 착용 안했을 때 애니메이션을 따로 만들고 착용했을때만 Layered blend per bone을 사용해서 Aim Offset과 착용 시 애니메이션을 블렌딩해주고 있다.
언리얼이 제공하는 AnimStarterPack이나 ThirdPerson을 사용하면 더 쉽게 구현할 수 있을 듯 한데, 처음부터 직접 만드는 방법도 혹시 모르니 알아두자...