실행화면 스냅샷.

Unity 5.2.0f3로 'Unity 5.x by example' 3, 4장 우주전쟁 따라하기.

조작법:
WASD, 화살표키로 주인공 기체 조종,
마우스 커서 위치로 주인공 기체 회전,
마우스 좌클릭으로 총알 발사.
적과 접촉하는 동안 주인공 기체의 체력이 닳고 체력이 0이 되면 폭파한다.

3/29 수
Unity 5로 'Unity 5.x by example' 3장 우주전쟁 따라하기.
텍스쳐, 오디오 소스 임포트하고 'PlayerController.cs' 새로 생성, 주인공 우주선의 이동, 회전 처리하기.
* [팁] 카메라를 에디터의 뷰포트 카메라와 일치하게 하기:
카메라를 선택한 뒤 메뉴의 GameObject-Align With View 클릭.

* 카메라 Projection: Orthographic, Size: 5.4로 설정하고 게임 뷰를 16:9로 설정.
Size 5.4는 [화면 세로 픽셀 수 / 2/ 100] 공식으로 얻는 것으로 목표해상도인 Full HD 1920*1080 크기 중 세로 1080 / 2 / 100 = 5.4로 얻은 값.
* 주인공이 화면 밖으로 벗어나지 않게 하기: 'BoundsLock.cs' 새로 생성, Player에 추가. Inspector창에서 horzRange: -9, 9, vertRange: -5, 5로 설정.
* 주인공 체력 처리용 'Health.cs' 새로 생성하여 Player에 추가.
* [팁] [SerializeField] private float _healthPoints = 100; 형태로 작성하면 private 변수라도 Inspector 창에 표시되어 체력의 증감을 볼 수 있다.
* 주인공 폭파시 파티클 효과 Instantiate()로 붙여넣고 추가된 폭파 파티클에 'TimeDestroy.cs'를 추가하고 Invoke()를 활용, 2초 뒤 제거되게 처리.

3/30 목
Unity 5로 'Unity 5.x by example' 3장 우주전쟁 마저 따라하기.
* 주인공 우주선을 ctrl-D로 복제한 뒤 변형하여 적 우주선 Prefab 만들기.
* Mover.cs로 적이 앞 방향으로 이동하게 처리.
* ObjFace.cs로 적이 주인공을 향햐 방향을 전환하게 처리.
* ProxyDamage.cs로 적과 주인공이 접촉하는 동안 주인공 체력 닳게 처리.
* 빈 게임 오브젝트 만들고 Spawner라 명명, Spawner.cs를 추가하여 주인공과 임의의 반경에서 5초마다 새로 적 생성하게 하기. 3장 따라하기 완료.

4/1 토
Unity 5로 'Unity 5.x by example' 4장 우주전쟁 2부 따라하기.
총알 프리팹 만들고 주인공 기체에 총알 발사 터렛 위치 생성.
* 주인공 기체에서 총알 발사, 적 기체와 충돌시 적 기체 폭파시키고 총알 비활성화 시키기:
총알 프리팹에 기존에 만들었던 Mover.cs를 추가해 앞으로 진행하게 하고 Ammo.cs를 새로 만들어 추가해 충돌시 상대 체력 감소시키고 일정 시간 뒤 자신을 비활성화 시키게 처리.
빈 게임 오브젝트 생성, 'AmmoManager'라 명명하고 AmmoManager.cs 새로 생성해 추가하여 큐와 배열을 이용, 지정한 숫자만큼의 총알들을 미리 생성해 둔 뒤 필요할 때 활성화하여 불러 쓰게 처리.
PlayerController.cs에 총알 발사 관련 코드 추가.
* 주인공과 주인공 총알 프리팹의 Layer를 'Player' 레이어 새로 생성해 설정하고 Edit-ProjectSettings-Physics에서 Player 부분 체크를 꺼서 주인공과 주인공 총알은 서로 충돌 처리되지 않게 하다.
* 현재의 버그: 폭파 파티클 이펙트에 물리 효과가 적용되어 있어서 적 폭파시 총알의 회전이 바뀌어 이후 다시 발사할 때 이상하게 휘어진 방향으로 가는 버그가 있다. 이건 간단히 총알 프리팹 Rigidbody의 xyz 회전을 모두 막고 y축 이동을 막으면 해결될 줄 알았는데 해결되지 않았다. 폭파 파티클의 물리 효과 cs를 제거하는 방향으로 해야할 듯. ExplosionDestroy.prefab의 ExplosionPhysicsForcs.cs을 비활성화 시키니 문제가 해결됐다. 그나저나 이 코드는 살펴볼 필요가 있다.
* 화면에 점수 표시되게 하기. GameController.cs로 게임 화면 표시 처리. 파괴시 게임 점수를 올리는 코드를 담은 ScoreOnDestroy.cs를 생성, 적 프리팹에 적용.
* 배경용 우주 화면을 Quad에 Texture로 적용하였는데 Tiling을 적용해도 한쪽으로 몰려 표시되고 반복되지 않는 버그 중. 버그가 아니라 우주화면 텍스쳐의 인스펙터 설정에서 Texture Type: Texture, Wrap Mode: Repeat로 설정해야 되는 거였다.
* 배경음악 스트리밍으로 추가하고 Game창의 Stats을 클릭해 fps 등을 보거나 Window-Profiler를 띄워 디버깅하기. 4장 따라하기 완료.

17/4/01 토