FPS, TPS 장르의 게임에서는 애니메이션 처리를 몸 전체로 하지 않고,
상체, 하체 및 몸통을 기본적으로 분리하는게 보통이다.
그 이유는 당연하겠지만, 플레이어가 조준하는 방향으로 캐릭터의 몸통이 회전하고,
달리면서 사격, 달리면서 장전 등 상체와 하체의 애니메이션이 따로 재생되는게 자연스럽기 때문이다.
유니티에서는 Avatar 설정 및 Avatar Mask를 이용해서 모델의 파츠별 분리를 쉽게 할 수 있다.
Synty Studio의 Simple Apocalypse에 좋은 예가 있어서 이를 한번 보고자 한다.
오늘 사용할 모델
이 모델의 Animator가 사용하는 Controller 및 Avatar 이다.
SA_CharacterAvatar를 먼저 열어본다.
상,하체를 분리하기 위해서는 일단 Avatar에 각 Bone들이 어떤 파츠에 속하게 될 지를 지정해주어야 한다.
그리고 Avatar Mask에서 Avatar의 어떤 파츠를 사용할 것인지를 지정하는 것이 기본 원리이다.
Animator에 세팅되어 있는 Layer 목록이다.
설정 아이콘 왼쪽에 있는 M 표시는 이 레이어가 Avatar Mask를 사용한다는 의미이다.
Animator의 Parameter 목록이다. Parameter의 변화로 애니메이션을 제어한다.
기본적으로 달리기 모션은 모델의 전체 파트를 대상으로 제작되어 있다.
하체는 달리기 모션을 사용하고 상체는 사격 모션을 사용한 모습이다.
Weapons Layer에는 Mask_Upper를 사용하고 있다.
Weapons Layer에 있는 Animation 이 재생될 경우, 이 Animation은 Mask_Upper에 해당되는 파츠에만 영향을 주게 된다.
Mask_Upper를 보면 몸통과 양 팔 부분이 활성화 되어있는 것을 볼 수 있다.
다음은 앉기 애니메이션인데 이 애니메이션은 하체 쪽에만 적용이 되어있다.
Crouch Layer를 보면 Mask_LowerBody를 사용하고 있다.
하체만 활성화되어 있기 때문에 Crouch Layer에 속한 Animation들은 하체에만 적용이 된다.
다음은 몸통 회전이다. 몸통의 회전은 보통 플레이어의 조준선을 따라가게 된다.
방식은 두 가지가 있는데
1. 회전된 애니메이션 간의 블렌드 처리
2. 몸통 bone에 회전 처리
이 Animator에서는 회전된 애니메이션간의 블렌드 처리를 사용하는 것을 알 수 있다.
Body_Horizontal, Body_Vertical 파라미터의 값에 따라
이미 회전된 몸통 애니메이션을 블렌딩 시키는 것이다.
당연하게도 Body Layer에서 사용하는 Mask_body는 몸통만이 활성화되어 있다.
'Game Engine > Unity' 카테고리의 다른 글
(Unity) Certified Expert : Programmer item walkthrough (0) | 2022.08.01 |
---|---|
(Unity) Inverse Kinematics (역운동학) (0) | 2022.07.28 |
(Unity) 기본적인 Spectator Camera (0) | 2022.07.20 |
(Unity) URP Shader - 텍스처를 그레이스케일로 변환해서 출력 (0) | 2022.07.10 |
(Unity) Occlusion Culling 사용 (0) | 2022.06.03 |