Unity 5.2로 '유니티 5.x 게임 개발의 시작' 1. 2D 트윈 스틱 슈터 따라하기.

* 주인공 우주선은 wasd, 화살표키로 전후좌우로 이동하며 마우스 커서 위치로 방향을 전환한다.
* 마우스 좌클릭, 혹은 스페이스 키를 누르면 총알을 발사한다.
* 적 우주선들은 한번 10대씩 무작위 위치에 생성되어 주인공 우주선을 향해 이동한다.
* 적 우주선들은 주인공의 총알에 2번 맞으면 파괴되며 점수 10점이 추가된다.
* 점수와 적 우주선들 생성 횟수가 화면에 표시된다.
- 적 우주선과 주인공 우주선이 접촉할 때 주인공의 체력이 깎여 나가 체력이 0이 될 경우 게임 오버가 되는 기능 추가 필요.

* 프로젝트 생성시 2D로 선택한 뒤 생성.
FlashCS4에서 대충 우주선 그린 뒤 png로 export, 유니티로 불러들인 뒤 Texture Type: Sprite(2D and UI)로 설정.
우주 배경으로 쓰일 그림을 역시 플래시에서 간단히 그린 뒤 jpg로 export, 유니티로 불러들인 뒤 Texture Type: Texture, Wrap Mode: Repeat로 설정. Cube 생성 뒤 위치:0/0/1, 크기:100/100/1로 변경, Box Collider 컴포넌트 제거. 배경 그림을 Cube에 적용하고 매터리얼의 Shader: Unlit/Texture 설정, Tiling: 25/25로 지정.

* 주인공 우주선 회전, 이동하기:
playerBehavior.cs을 새로 생성, 주인공 우주선에 추가하여 주인공 우주선이 마우스 방향으로 회전하고 wasd, 방향키에 따라 이동하게 처리.
ShootButton 항목에 Size: 2, Mouse 0와 Space를 각각 추가.

* 주인공 우주선 레이저 발사:
playerBehavior.cs에 코드 추가.
레이저로 쓰일 그림 플래시에서 그려 png로 익스포트, 불러들이고
진행방향으로 계속 이동하고 2초뒤 제거되는 내용의 코드를 담은 playerLaser.cs 새로 생성, 레이저에 추가한 뒤 prefab으로 만들기.
프리팹으로 만든 레이저 프리팹을 playerBehavior.cs의 Laser 항목에 끌어넣기.

레이저가 발사되지 않는 버그가 생겼으나
timeTilNextFire -= Time.deltaTime;
이 코드를 빼먹어서 생긴 문제. 해결되다.

* 주인공을 향해 직진하는 적 우주선 추가, 주인공의 레이저에 맞아 체력이 0이 되면 제거되게 하기:
역시 적 우주선을 플래시에서 대충 그려 png로 익스포트, 유니티에서 불러들이기. moveTowardsPlayer.cs, enemyBehavior.cs 새로 생성, 적 우주선에 추가. Circle Collide 추가, Rigidbody 2D 추가(Gravity Scale: 0로 설정)-OnCollisionEnter2D()함수를 작동되게 하려면 둘 중 한 개는 Rigidbody 2D를 가져야 한다.

* 일정시간마다 적 편대 랜덤 위치,방향으로 생성하기:
빈 게임오브젝트 생성, 'GameController'라 명명, Tag: GameController로 설정. gmaeController.cs 새로 생성하여 추가. Enemy 항목에 적 우주선 프리팹 끌어 넣기. enemyBehavior.cs에 적 제거시 gameController.cs의 현재 적 숫자 줄이는 함수 호출 추가.

* 적 제거시 폭파 파티클 효과 내기:
Hierarchy에서 Particle System 새로 추가. 'Explosion'이라 명명.
- Duration: 1.0, Start Lifetime 우측 화살표 클릭, Random Between Two Constants 로 변경하고 0, 1로 설정, Start Speed도 동일하게 0, 1로, Start Size는 0,0.5로 설정. Start Color 원하는 색으로 지정. Simulation Space: World로 지정.
Looping 체크 해제하고 씬 창 우하단의 Particle Effect 창에서 Stop 버튼 클릭한 뒤 Simulate 버튼을 눌러 효과 확인.
- Emission 탭 열어 Rate: 200으로 변경(한 번에 얼마나 많은 파티클 생성)
- Shape 탭 열고 Sphere로 변경하고 Radius를 적우주선 크기로 맞추고 Random Direction 체크.
설정을 끝낸 뒤 프리팹으로 만들기.
enemyBehavior.cs에 적 제거시 그 위치에 폭파 파티클 붙이는 코드 추가하고 Explosion 항목에 폭파 프리팹을 끌어넣는다.

* 사운드 이펙트, 배경 음악 추가하기:
- 적 프리팹에 Audio Source 컴포넌트 추가, Play On Awake 체크 해제.
enemyBehavior.cs에 적과 레이저 충돌시 타격 효과음 내는 코드 추가, Audio Source에 불러들인 타격 효과음 wav 적용.
- 폭파 효과 프리팹에 Audio Source 컴포넌트 추가, Play On Awake 체크. Audio Source에 불러들인 폭파 효과음 wav 적용.
- 주인공기에 Audio Source 컴포넌트 추가, Play On Awake 체크 해제.
playerBehavior.cs에 레이저 발사시 효과음 내는 코드 추가, Audio Source에 불러들인 타격 효과음 wav 적용.
- GameController에 Audio Source 컴포넌트 추가, Play On Awake와 loop 체크, Audio Source에 불러들인 배경음악 mp3 적용.

* 점수, 스코어, 웨이브 숫자 화면 표시하기:
- Hierarchy 탭에서 Create > UI > Text로 새 Text 오브젝트 생성, 'ScoreCountText'라 명명. Canvas, Text, EventSystem 3개가 동시에 생성된다.
Text 선택한 뒤 Anchors Min/Max/Pivot을 모두 0/1로, PosX/PosY: 10/-10로 설정하여 좌상단에 배치시키고 Color: 하얀색, Font Size: 25로 설정.
- 'ScoreCountText'를 복제한 뒤 'WavesCountText'로 명명, Anchors Min/Max/Pivot을 모두 1/1로, PosX/PosY: -10/-10로 설정하여 우상단에 배치. gmaeController.cs, enemyBehavior.cs에 스코어, 웨이브 증가 및 화면표시 코드 추가.

17/8/22 화