자료실

[PUN2 실전](연습용)멀티플레이 레이싱 게임 만들기 1/2
작성자 | admin 2021-01-18  |    조회수 : 1999  
안녕하세요^^
현실에서 스피드를 즐길 수도 있지만 게임에서도 스피드를 만끽할 수 있죠.
그래서 많은 레이싱 게임들이 PC, App으로 나왔습니다.


대표 몇가지를 찾아보면

* 크레이지 아케이드
https://ca.nexon.com/Event_20190926_18th

* 차차차(서비스 중지)
https://blog.cj.net/695

* 아스팔트
http://www.gameloft.com/asphalt8/?lang=kr

정도로 찾을 수 있습니다.


이런 레이싱 게임을 한번 연습삼아 만들어보려고 합니다.
연습용 레이싱 게임을 만들때 유니티에서 제공하는 어셋 또는 자습서만 이용해도 충분합니다.


Standard Assets 에 기본적인 준비물이 다 있습니다.
그래서 프로젝트를 만들고 Standard Assets를 추가하면 됩니다.

https://assetstore.unity.com/packages/essentials/asset-packs/standard-assets-32351


레이싱에 필요한 부분만 임포트하려면 Vehicle Tools를 이용하면 됩니다.
https://assetstore.unity.com/packages/essentials/tutorial-projects/vehicle-tools-83660


유니티에서 제공하는 어셋의 자동차 모델링으로는 패밀리카, 스포츠카, 트럭 이렇게 3가지로 구성되어있습니다.
* 패밀리카


* 스포츠카


* 트럭


그리고 트랙도 기본적으로 구성되어 있습니다.



트랙 또는 지형을 직접 만들고 싶다면 Terrain 컴포넌트의 Brushes, Trees 등을 이용하시면 됩니다.

* Terrain 컴포넌트


* 지형 예시




레이싱 게임에 여러가지 재미있는 게임요소를 추가할 수 있습니다.
시간, 충돌, 공격, 방어, 아이템 등 많은 것이 있겠죠?
오늘은 시간으로만 게임요소를 고려해보겠습니다.

자동차가 시작점을 지나가면서(충돌) 타이머 시스템이 돌아가게 하겠습니다.
즉, Collider 를 이용해서 타이머가 시작합니다.

충돌을 인지해야 함으로 자동차 오브젝트와 시작점 오브젝트에 Box Collider 컴포넌트 추가하세요.
추가한 Box Collider를 오브젝트에 맞게 설정해주세요.

자동차 오브젝트에 Box Collider 설정


그리고 OnControllerColliderHit 또는 OnCollisionEnter 함수를 이용해 트리거를 완성하겠습니다.


API
* OnControllerColliderHit
https://docs.unity3d.com/kr/530/ScriptReference/MonoBehaviour.OnControllerColliderHit.html

* OnCollisionEnter
https://docs.unity3d.com/kr/530/ScriptReference/Collider.OnCollisionEnter.html



충돌 인식을 통해 레이싱 시작(타이머 카운트 시작)하도록 해보겠습니다.

API에 따르면 OnCollisionEnter 함수는 'collider/rigidbody에 다른 collider/rigidbody가 닿을 때 호출됩니다.' 라고 적혀있습니다.

만약, 충돌 대상물체가 많다면, 이름으로 구분할 수 있습니다.
즉, OnCollisionEnter 함수는 Collision을 인자로 받습니다.
여기 Collision의 이름을 이용해 구분할 수 있습니다.
다시말해, Collision의 gameobject 안에 이름이 있습니다.

예를 들어,



타이머 시작
앞서 설명해드린대로 자동차와 시작점이 충돌하면 타이머를 돌리도록 하겠습니다.

타임이 돌아가는 클래스는 찾기 쉬운 곳에 두면 됩니다. 혹은 변수로 연결하셔도 됩니다.
그리고 타임은 Update 함수에서 Time클래스의 deltaTime을 더하게 하면 됩니다.

예를 들어,



API
* Time.deltaTime
https://docs.unity3d.com/kr/530/ScriptReference/Time-deltaTime.html

다음에는 포톤 서버를 이용해 멀티 플레이가 되도록 해보겠습니다!
감사합니다~



★Photon 공식 홈페이지
https://www.photonengine.com/ko-kr/Photon

★Photon Help Center
https://support.photonengine.jp/hc/ko

★Photon Korea 공식 블로그
https://photonkr.tistory.com

★Photon Korea 페이스북
https://www.facebook.com/photoncloudkr

★Photon Korea 유튜브
https://bitly.kr/photonyoutube