진행 상황
3인칭 카메라
에셋 스토어의 무료로 주어지는 Starter Assets을 사용하였습니다.
기본적으로 캐릭터의 점프, 이동과 마우스 회전에 따른 카메라 회전 기능이 스크립트로 제공되어 덕을 많이 보았습니다.
하루만 더 빨리 알았더라면..
애니메이션
캐릭터의 기본적인 자세는 다음과 같이 실제 게임 내에서 사용되는 애니메이션을 사용하였습니다.
확실히 제공된 애니메이션을 사용해보니 제가 만들려고 시도한 것보다 훨씬 자연스러워서 보기 좋았습니다.
다리 모션 구현
그러나 문제점이 있었습니다.
바로 제공되는 애니메이션의 수가 그리 많이 않았다는 것입니다.
제공되는 애니메이션은 위가 끝이었고, 움직임과 관련된 애니메이션은 밑의 앞으로 뛰는 애니메이션만 존재헀습니다.
제가 원하고자 하는 바는 캐릭터는 한 방향을 조준을 유지하되, 이동 방향에 맞추어 알맞은 다리 모션을 취하도록 하고 싶었습니다.
그래서 저는 언리얼 공부 중 알게된 믹사모라는 오토 리깅 사이트에서 필요한 애니메이션을 구하였습니다.
이 사이트에서는 다양한 애니메이션이 존재해서, 제가 원하는 애니메이션을 어렵지 않게 찾을 수 있었습니다.
그러나 위 사진을 보시면 아시겠지만, 믹사모 사이트는 캐릭터 모델을 업로드하면 이를 자동으로 리깅을 해주지만, 총기는 적용이 되지 않는다는 한계가 있었습니다.
.
.
곰곰이 생각을 해보았는데, 결국 제가 여분의 애니메이션을 구한 이유는 총구는 한곳을 유지하되 이동 방향에 따른 다리 모션을 구하기 위함이었습니다.
그래서 유니티에 아바타 마스크라는 것을 사용했습니다. 아바타 마스크는 애니메이션을 캐릭터의 특정 부위에만 적용시킬 수 있게 도와주는 역할을 합니다. 캐릭터의 상체 부분은 제공되는 애니메이션이 적용되고, 하체 부분은 제가 따로 구한 애니메이션이 적용되도록 하였습니다.
에임 상,하 구현
다음으로 제가 원하는 것은 카메라 상하 각도에 맞춰 캐릭터 조준 모션 또한 위아래로 변환되게끔 하고 싶었습니다.
유니티에 blend Tree 라고 언리얼 엔진에서의 blend space와 같은 역할을 가진 것이 있었습니다.
언리얼 엔진에서의 경험을 되살려 따로 구현하는데는 어렵지 않았습니다. 헛되지 않았구나
Pitch라는 float형 변수를 만들었고, 값은 Starter Assets에서 제공되는 카메라 스크립트에서 카메라 높이 값을 가져오게끔 하였습니다.
제공되는 기본 사격 자세에서 척추 뼈들의 회전값을 변경시켜 위, 중간, 아래를 조준하는 세가지 모션을 만들었습니다.
.
총기의 뼈대가 손 뼈대에 귀속되어 있는 것이 아닌, 캐릭터와 독립된 개체로서 존재했습니다…
위와 같이 총기 뼈대와 캐릭터 뼈대가 같은 부모를 가지고 있어, 애니메이션의 각 키프레임마다 총기의 회전 값은 물론, 위치 값까지 함께 수정해주어야 했습니다.
그렇다고 현재 총기의 뼈대를 수정하여 손에 귀속되도록 하고자 하였으나, 이 경우 기존에 제공되던 모든 애니메이션의 총기 뼈대 값을 다시 설정해야 했기에 번거로웠고, 총기 뼈대의 XYZ축도 이상하게 적용되어 있어, 단순히 총기가 앞으로 향하게 하는데도 XYZ 회전값을 모두 수정해주어야 했습니다..
이래도 문제, 저래도 문제, 제가 선택한 방법은 바로, 노가다.
아직 유니티에 대한 지식이 그리 많지 않던 저는 노가다를 통해 각각의 모션을 만들었습니다.
머리가 나쁘면 몸이 고생한다는데, 몸이 좋아서 다행입니다.
.
.
그 외에도, 조준 기능, 조준 시 카메라 줌인 등등 필요한 기능은 Starter Assets의 스크립트를 수정하여 구현하였습니다.