Unity 5.02로 'C#과 자바스크립트로 하는 유니티 3.x 게임 개발' 3장 배경 제작, 4장 플레이 캐릭터와 스크립팅, 5장 상호작용 따라하기.

18/9/5 수

* 섬과 바닷물 생성하기:
3D Object-Terrain으로 생성. Raise/Lower Terrain 탭 Brush Size: 100, Opacity:75로 설정, 뷰 기즈모 Y축 눌러 평면시점 전환. 그냥은 지면이 올라오고 Shift를 누르면 지면이 낮아진다. 반달스런 섬 기본 모양 그리기.
Paint Texture 탭 Edit Texture-Add Texture 선택, 'GrassHillAlbedo.psd' 선택해 기본 텍스처 깔기. 이후 계속 추가하여 다양성 주게 채색.
이전 만든 게임인 'u5be04FPSai.sln'의 지형자료 중 Water-Water4-Prefabs-Water4Advanced.prefab를 화면에 추가했더니 꽤 괜찮은 물 효과가 난다.

자꾸 다른 곳에서 폴더채 불러들이다가 Standard Assets의 meta파일들을 갖다 붙이니 치명 에러가 발생해 유니티가 멈췄고 강제로 에러 리포트를 보내지 않으면 나가지도 않게 하여 작업관리자에서 작업 끝내기로 종료하다. 어쨋건 지금껏 작업한 섬 작업은 다 날아가 새로 시작.
새로 섬 만들고 바닷물 채우기 완료.

* 이동/점프 가능한 1인칭 캐릭터 추가하기:
Assets-Import Package-Characters 불러들이고 Standard Assets-Characters-FirstPersonCharacter-Prefabs-FPSController.prefab을 Hierarchy 창에 끌어넣으니 그대로 1인칭 캐릭터가 추가되어 만든 섬을 돌아볼 수 있다. 걷기/뛰기 이동, 점프가 가능하다. 점프를 이용하면 경사가 가파른 곳도 올라갈 수 있다.
섬 돌아다녀 보고 조금씩 다듬기.

에이콘 출판사 페이지에서 예제파일 다운받아 book_assets.unitypackage 더블클릭하여 임포트. Models-Outpost.fbx 선택, Scale Factor: 1.5, Generate Colliders, Generate Lightmap UV 체크로 설정. Animations 탭에서 Clips의 +를 눌러 3개를 만들고 이름/Start/End를 Idle/1/2, doorOpen/1/15, doorClose/16/29로 설정하여 애니메이션 파일 3개 생성. 화면에 추가하여 배치.

* 문 여닫기 처리:
- Box Collider를 앞 뒤로 늘려 그 안에 주인공이 들어가면 문 열리고 3초뒤엔 다시 자동으로 닫히게 처리.
Outpost-door에서 Box Collider를 추가, 크기 조절하고 기존 Mesh Collider는 제거.
Rigidbody 추가. Use Gravity: Off, Is Kinematic: On으로 설정.
Audio Source 추가.
'playerDoor' Tag 새로 생성하여 적용.
Outpost-Animation-Play Automatically: Off로 설정.
'PlayerCollisions.cs' 새로 생성, FPSController에 추가. DoorOpenSound, DoorShutSound에 각각 door_open.wav, door_shut.wav 드래그하여 적용.
OnControllerColliderHit(ControllerColliderHit hit)이라는 Character Controller 사용 캐릭터에 사용되는 특이한 함수를 사용했다.

* FPS 등에서 총알 충돌처리의 경우 총알이 너무 빨라 총알이 대상체를 통과해 지나갈 수도 있기에 레이캐스트 충돌 예측을 하는 것이 좋다.