Unity 5로 '유니티 5 메카님 캐릭터 애니메이션' 3장 환경과의 상호작용 따라하기.

* 팔만 달린 모델(뼈대는 모두 갖춰짐) 불러들여 캐릭터 컨트롤러 자식으로 하고 애니메이터 컨트롤러와 애니메이션 파일들, 스크립트를 이용해 걷기, 점프, 총 쏘기, 물건 줍기 구현하기.

16/3/20 일

* 플레이어 팔 추가하기: player_m01.fbx(팔만 달린 모델), FPS_Player_New.png, FPS_Player_normal.png(매핑용 텍스쳐들) 불러 들이기.

* 캐릭터 컨트롤러 불러오기: 메뉴-Assets-Import Package-Characters 선택, None 버튼 클릭해 모든 선택 취소한 뒤 Editor, FirstPersonCharacter CrossPlatFormInput, Utility 항목 체크하고 Import.
Project창 Assets-Standard Assets-Characters-FirstPersonCharacter-Prefabs로 이동, FPSController.prefab을 끌어 Hierarchy에 추가.
Hierarcy 창에서 Main Camera 선택, 삭제.

* 플레이어 팔, 컨트롤러 자식으로 추가: Hierarcy 창-FPSController 하위 FirstPersonCharacter에 player_m01.fbx를 자식으로 추가하여 카메라 하위에 모델이 위치하게 처리.
'ShootIdle'이란 이름으로 새 animatorController 생성, 플레이어 팔 모델의 Animator-Controller에 추가하고 Animator창에서 'ShootIdle'이란 새 상태 생성, Inspector창 Motion에 PistolIdles.fbx 하위 ShootIdle을 넣어 기본적으로 총을 겨눈 모양이 되게 처리.(PistolIdles.fbx 선택하고 Rig-Animation Type: Humanoid로 변경, Animation에서 'shootIdle'이라 명명하고 Start:10, End:80, LoopTime: On으로 설정)

* Project창 Assets-Standard Assets-Characters-FirstPersonCharacter 카메라 설정 중 Clipping Planes-Near를 0.3에서 0.05로 변경하여 팔이 잘 보이게 설정. Field of View: 45로 설정.

* 플레이어 총 추가하기:
플레이어 팔 모델(player_m01)옆 화살표를 Alt+클릭하여 하위 폴더를 모두 열고 zombie_m_HandR의 자식으로 총 모델을 추가, 위치(-5.35/-1.08/-2), 회전(355/180/74), 크기(0.12/0.12/0.12)로 설정.

* 'ShootIdle' 애니메이터 컨트롤러에 'Shoot', 'Pickup' 상태 생성, 각각 'ShootIdle'과 트랜지션 연결.
'Shooting'(Bool), 'Picking'(Trigger) 파라미터 생성하고 스크립트에서 상태 전환에 이용.
thisAnimator.SetBool("Shooting", true);
thisAnimator.SetTrigger("Picking");

* 애니메이션 파일 나누기 관련:
PistolIdles 애니 나누기-shootIdle: 10-80, shootIdleRight: 90-160, shootIdleLeft: 170-240
Pickups 애니 나누기-pickup: 20-60, pickupHeavy: 70-120
shoots 애니 나누기-shoots: 250-258
zombie_walk 애니 나누기-zwalk01: 180-225, zwalk02: 225-264, zwalk03: 264-304,

* 런치박스 아이템 모델 추가하고 Box Collider 컴포넌트 추가(Is Trigger:On), 닿으면 줍는 애니메이션, 아이템 제거 처리하는 Item.js 스크립트 추가.

* 줍는 장면을 보여주는 전용 카메라 만들기:
- 빈 게임오브젝트 생성, 'PickupCamParent'로 명명.
- GameObject-Create Other-Camera로 새 카메라 생성, 'pickupCamera'라 명명. Transform, Camera 컴포넌트만 남기고 나머지 Remove.
카메라 설정 중 Clipping Planes-Near를 0.3에서 0.05로 변경, Field of View: 45로 설정.
Depth를 0에서 1로 바꿔 캐릭터 컨트롤러에 포함된 카메라 보다 우선적으로 보이게 처리.
- GameObject-3D Object-Sphere로 구 생성, 'defaultTarget'으로 명명, position(0/0/2), scale(0.1/0.1/0.1)로 설정. Sphere Collider, Mesh Renderer 컴포넌트 제거.
PickupCamParent의 자식으로 pickupCamera, defaultTarget을 끌어넣기. 프로젝트 창으로 드래그해 prefab으로 만들기.

* 이후 스크립트들을 이용, 아이템에 주인공이 닿으면 아이템 줍는 애니메이션 발동, 줍는 모습 전용 카메라 생성하여 줍는 모습 찍고 이후 카메라 제거, 아이템 제거하게 처리.

총 쏘기, 아이템 줍기까지 따라하여 4장 따라하기 완료.
다만 Pickup 애니메이션이 제대로 설정되지 않아 카메라가 약간 이상한 움직임을 보이는 문제 발생 중. -문제 해결: player_m01의 Rig 설정을 제대로 완료하지 않은 때문에 생긴 문제였다. 보이는 팔들 뿐 아니라 머리, 다리, 발 등도 모두 제대로 배치를 하자 애니메이션의 문제는 사라졌다.

애니메이터 컨트롤러에서 ShootIdle > Pickup 전환 애니메이션이 제대로 되지않고 있다. -문제 해결: animation들의 Animation Type이 ShootIdle은 Generic, Pickup은 Humanoid로 제각각이었기 때문으로 모두 Humanoid로 바꾸자 문제가 해결되다.
현재는 주인공 캐릭터의 몸이 약간 오른쪽으로 기울어져 있는 문제가 발생 중.