유니티3D_4_3

Download Report

Transcript 유니티3D_4_3

한국IT전문학교 박재성

모 바 일 게 임 제 작

게임 제작의 기초(1)

4 장

모 바 일 게 임 제 작

4.26 태그활용 - 포탄이 화면 벗어날 때의 처리 void Update () { //바닥으로 추락한 포탄 삭제 if (transform.position.y < 0) {// 포탄의 높이 조사 Destroy(gameObject); } } 또는 Void Start(){ Destroy(gameObject, 1); // 1초후 포탄 삭제 }

4.27 파티클의 활용 - Import Package > Particle 선택 - 다양한 파티클 제공 - Legacy Particles/Small Explosion 설치후 속성 변경해서 폭파 불꽃을 만든다.

폭파불꽃을 프리팹으로 등록한다.

4.28 카메라 이동 - 카메라가 탱크를 따라가도록 설정. 내장 스크립트 사용 - Import Package > Script 선택 - Carmera Scripts/SmoothFollow를 카메라에 연결.

- Tank를 변수 Target에 연결.

4.28 카메라 이동

4.29 스카이박스 사용하기 - 카메라에 배경을 추가하는 기능.

- Import Package > Skyboxes 선택 - Main Camera에서 Component > Rendering > Skybox 선택 - Main Carmera의 Skybox콤포넌트에 스카이박스를 연결한다.

4.30 탱크에 콜라이더 추가 - 외부에서 만들어 Import 3D 오브젝트는 콜라이더를 추가한다.

- 본체는 Box Collider, 포탑은 Box collider 혹은 Sphere Collider, 포신 은 Capsule Collider를 사용 - 탱크의 Body 선택 후 Component > Physics > Box Collider 선택. 포탑 과 포신도 같은 방법으로 설정 - Tank에 리지드바디 추가. 속성 설정 - 벽에 리지드바디 추가.

4.31 적군 벙커 만들기 - 벙커를 만든 후 포탑안에 spPoint, 포신을 넣고, 포탑을 벙커안에 넣는다.

4.32 LookAt-목표물 바라보기 [ csBunker.cs ] public Transform tank; public Transform bullet; Transform spPoint; int power = 1200; float delayTime = 0; // 아군 탱크 // 포탄 // Spawn Point // 포탄 발사 파워 // 발사 지연 시간 } { void Start () spPoint = transform.

Find ("spPoint"); } { void Update () transform.

LookAt (tank); //탱크를 바라본다.

4.32 LookAt-목표물 바라보기 - 벙커의 포탑에 csBunker.cs를 연결. 벙커의 포탑만 회전하도록 함.

- tank변수에는 탱크의 Turret을 연결한다.

- 벙커를 프리팹으로 만들고 화면에 여러 개 배치한다.

4.33 Raycaset-목표물 탐색 - TANK태그를 생성해서 탱크의 본체, 포탑, 포신에 설정한다.

- csBunker.cs에 추가 void Update (){ delayTime -= Time.deltaTime; } // 지연시간 감소 // 탱크 탐색 void SearchTank (){ RaycastHit hit; if (Physics.

Raycast (spPoint.position, spPoint.forward, out hit , 15)) { if (hit.transform.tag == "TANK") { FireBullet(); } } }

4.33 Raycaset-목표물 탐색 // 포탄 발사 void FireBullet() { if (delayTime <= 0) { delayTime = 2;// 지연시간 2초 //포탄생성 Transform obj = Instantiate(bullet, spPoint.position, spPoint.rotation) as Transform; obj.rigidbody.AddForce(spPoint.forward * power);//포탄발포 } }

4.33 Raycaset-목표물 탐색 - csBullet에 다음코드 추가 void OnTriggerEnter (Collider coll) { … //포탄이 벙커와 부딪히면 벙커 제거 if (coll.tag == "BUNKER") { Destroy(coll.transform.root.gameObject);//벙커 전체 제거 } Destroy(gameObject); }

4.34 Debug 출력 - csBunker에 void SearchTank메서드에 다음코드 추가 //15m 거리를 표시함 Debug.DrawRay(spPoint.position, spPoint.forward * 15, Color.green);