[런게임] 유니티 3D로 러너 게임 만들기 - 플랫폼(길) 생성하기

|

길 생성하기

길을 생성하는 방법은 스카이라인을 생성하는 방법에서 약간만 다르다. 길은 길과 길 사이의 거리와 높이가 랜덤하게 배치된다. 또한 우리는 스카이라인이 보이게 길의 위치나 고도를 제한할 필욛 있다. 만약 길이 화면 밖에 있으면 우리는 그것을 다시 사용 해야 된다.

Platform이라는 폴더를 생성한다PlatformManager라는 C# script를 생성한다 . 그리고 SkylineManager 코드를 복사한다. 그리고 아래처럼 몇개의 코드만 고친다.

using UnityEngine;
using System.Collections.Generic;

public class PlatformManager : MonoBehaviour {

	public Transform prefab;
	public int numberOfObjects;
	public float recycleOffset;
	public Vector3 startPosition;
	public Vector3 minSize, maxSize, minGap, maxGap;
	public float minY, maxY;

	private Vector3 nextPosition;
	private Queue<Transform> objectQueue;

	void Start () {
		objectQueue = new Queue<Transform>(numberOfObjects);
		for(int i = 0; i < numberOfObjects; i++){
			objectQueue.Enqueue((Transform)Instantiate(prefab));
		}
		nextPosition = startPosition;
		for(int i = 0; i < numberOfObjects; i++){
			Recycle();
		}
	}

	void Update () {
		if(objectQueue.Peek().localPosition.x + recycleOffset < Runner.distanceTraveled){
			Recycle();
		}
	}

	private void Recycle () {
		Vector3 scale = new Vector3(
			Random.Range(minSize.x, maxSize.x),
			Random.Range(minSize.y, maxSize.y),
			Random.Range(minSize.z, maxSize.z));

		Vector3 position = nextPosition;
		position.x += scale.x * 0.5f;
		position.y += scale.y * 0.5f;

		Transform o = objectQueue.Dequeue();
		o.localScale = scale;
		o.localPosition = position;
		objectQueue.Enqueue(o);

		nextPosition += new Vector3(
			Random.Range(minGap.x, maxGap.x) + scale.x,
			Random.Range(minGap.y, maxGap.y),
			Random.Range(minGap.z, maxGap.z));

		if(nextPosition.y < minY){
			nextPosition.y = minY + maxGap.y;
		}
		else if(nextPosition.y > maxY){
			nextPosition.y = maxY - maxGap.y;
		}
	}
}
이제 platforms 프리팹을 만들고, material 도 만들어보자.  skyline materials을 복사해서 칼라값만 (255, 60, 255)로 변경할수있다. Platform Regular Mat으로 변경하자. 새로운 cube를 만들고, materials을 붙이고 프리팹으로 만든다. 이름은 Platform으로 지정한다. 프리팹과 메트리얼은 Platform 폴더에 집어넣는다.
Platform prefab.
Platform Manager 이라는 빈 게임오브젝트를 만들고 Managers의 자식으로 놓아둔다.  Platform Manager 컴포넌트에 스크립트를 붙인다. 프리팹에 Platform prefab을 연결하고 Number Of Objects은 6으로 설정한다.  Recycle Offset 은 20으로 설정하고, Start Position 은 (0, 0, 0), Min Size 은 (5, 1, 1), Max Size 는 (10, 1, 1)으로 설정한다. 그리고 새로운 필드인 Min GapMax Gap,Min Y, 그리고 Max Y  는 각 각 (2, -1.5, 0), (4, 1.5, 0), -5, 그리고 10 으로 설정한다. 다시 말하지만 원한다면 니가 원하는 숫자로 설정할수있다.
platform manager managers
Platform manager.


Trackback 0 And Comment 0