코코넛을 던져 표적을 맞추고 3개를 모두 쓰러뜨리면 우측 벽 전지가 보상으로 주어진다.

Unity 5.02로 'C#과 자바스크립트로 하는 유니티 3.x 게임 개발' 7장 인스턴스 생성과 리지드바디, 8장 파티클 시스템 따라하기.

18/9/7 금

* 코코넛 생성, 던질 위치 잡기, 던지기:
Sphere 생성, 'CoconutPref'이라 명명, x/y/z: 0.5/0.6/0.5로 크기조절, CoconutTexture.jpg 적용하여 재질 입히기. Rigidbody 적용. 'Projectiles' tag 생성하여 적용. Project 창으로 끌어 프리팹으로 만들기.
- Player-FirstPersonCharacter 아래 자식으로 빈 게임오브젝트 생성, 'Launcher'라 명명, Position(x/y/z): 1/0/1, Rotation(x/y/z): 0/352/0로 설정해 코코넛 생성위치 잡고 중앙으로 날아가게 약간 회전시켜 두기.
'CoconutThrower.cs' 새로 생성, 발사키(Fire1) 클릭시 던지는 소리 나게하고 코코넛 프리팹 Launcher 위치에서 던지기 코드 작성. 책의 Rigidbody를 GameObject로 변경.

- 컴포넌트 유무 확인 및 부착: 게임오브젝트에 리지드바디 있는지 확인 후 AddComponent()로 리지드바디 추가가 가능하다.
- 충돌배제1: IgnoreCollision(충돌체A, 충돌체B, 충돌 무시여부) 함수로 배제를 한다. ex) Physics.IgnoreCollision(transform.root.GetComponent<Collider>(),newCoconut.GetComponent<Collider>(), true);
- 충돌배제2: 'Player', 'Projetiles' 새 레이어 생성하고 각각 주인공과 코코넛 프리팹에 적용하고 Edit-Project Settings-Physics에서 Player Projetiles에서 Player와 Projetiles이 교차하는 부분 체크를 꺼주면 주인공과 코코넛 프리팹간엔 충돌체크를 않는다.

* 특정지역에서만 코코넛 던지기 활성화:
coconutShy.fbx 화면에 추가, Scale Factor: 1로 설정.
자식 mat에 Box Collider 추가, Is Trigger: On 하고 위로 솟아나오게 콜라이더 크기 조정. 'ThrowTrigger.cs' 추가하여 발판에 오를 경우만 코코넛 던지게 처리.
자식 coconutShy에 Box Collider 5개 추가해 배치해 벽 충돌체 보강.
'TidyObject.cs' 생성, CoconutPref에 추가해 3초뒤 제거되게 처리.

* 표적과 코코넛 충돌:
target.fbx 화면에 추가, Scale Factor: 1로 설정, Animations 탭에서 Clips의 +를 눌러 3개를 만들고 이름/Start/End를 Idle/1/1, doorOpen/1/13, doorClose/14/36로 설정하여 애니메이션 파일 3개 생성.
CoconutShy의 자식으로 추가, Tranform-reset 선택 뒤 Position(x/y/z): 0/0/-2.4, Rotation(x/y/z): 0/180/0, Animation-Play Automatically: Off 로 설정.
CoconutShy-TargetPref-target_pivot-target, target_support_1, arget_support_2에 Rigidbody(Gravity:Off, IsKinematic:On) 추가.
target엔 Mesh Collider, Audio Source 컴포넌트, 'TargetCollion.cs'도 추가하고 HitSound, ResetSound에 각각 target_hit.wav, target_reset.wav 드래그로 추가. 프로젝트창으로 드래그하여 프리팹화 하고 2개를 더 복제하여 3개의 타겟을 나란히 배치하기.

* 표적 3개 동시 쓰러트릴 경우 보상으로 전지 나타내기:
- 3개 동시 쓰러지고 전에 승리한 적이 없으면 경기장 우측면 벽에 디스플레이되어있는 일반 오브젝트인 전지 모형을 좌측 1m 이동시키고 그 위치에 전지 프리팹을 생성한 뒤 일반 오브젝트 전지 모형은 제거하는 방식으로 처리.
CoconutShy에 'CoconutWin.cs' 생성, 추가, WinSound에 win_clip.wav를, CellPref에 PowerCellPref 을 드래그하여 적용.

* 크로스헤어 추가:
UI-Image 새로 추가, 'ImageCrossHair'로 명명. Crosshair.png의 Texture Type: Sprite(2D and UI)로 변경한 뒤 ImageCrossHair의 Image-Source Image에 드래그하여 적용, Set Native Size 버튼 클릭하여 원 이미지 크기로 복귀.
'ThrowTrigger.cs'에 코드 추가하여 발판에 올라갈 때 크로스헤어가 보이게 하고 내려오면 보이지 않게하다. 역시 이전 코코넛 던지기 게임 승리한적이 없을 경우 발판에 오를 때 힌트가 보이게 처리.
7장 인스턴스 생성과 리지드바디 따라하기 완료.

Unity 5.02로 'C#과 자바스크립트로 하는 유니티 3.x 게임 개발' 8장 파티클 시스템 따라하기.

* 모닥불 배치, 불 이펙트 만들기:
campfire.fbx 화면에 배치, Capsule Collider(Center(x/y/z): 0/0/0, Radius:2, Height:5) 추가.
불 이펙트는 현재와 너무 시스템이 달라 이전 만들었던 ugei03Fire.sln의 FireEffect 폴더 채 불러들여 그중 EffFire.prefab을 모닥불 위치에 배치하고 크기 등을 조절.

* 성냥 배치, 습득시 GUI 표시:
matchbox.fbx 화면에 배치(outPost의 자식으로 추가한 뒤 이동시키는 것이 간단), 초소 안 책상위에 위치시키고 Box Collider 추가. 'Matches.cs' 생성, 추가.
UI-Image 생성, 'ImageMatches'라 명명. MatchGUI.png의 Texture Type: Sprite(2D and UI)로 변경 뒤 적용.
'Inventory.cs'에 성냥 주울 경우 성냥 제거하고 성냥 획득 GUI 띄우기, 모닥불과 충돌시 처리, 성냥을 가진채 모닥불과 충돌시 처리 코드 추가.
8장 파티클 시스템 따라하기 완료.
초소의 방안과 코코넛 던지기 방에 Point light 추가하는 등 다듬기 작업.


초소에 문을 열고 들어가 성냥을 획득한 뒤 모닥불에 다가가면 모닥불에 불이 붙는다.