Простая 2D-игра на Unity 5. Часть 3

Добавлено: 22/05/2016 03:34 |  Обновлено: 18/03/2018 16:36 |  Добавил: nick |  Просмотры: 3405 Комментарии: 5
Вводная часть
Продолжим тему создания простой 2D-игры на Unity 5, и на этот раз добавим возможность случайного размещения кристаллов на игровом поле.
Десктопная версия игры, основанная на этом материале.
Android-версия игры ×
Если вы знакомы с двумя предыдущими материалами, то знаете, что каждый раз при запуске игры кристаллы создаются в определённых местах, в которых мы их разместили на этапе разработки. Это хорошо, но если в нашей игре бесконечное число уровней и мы хотим, чтобы с каждым новым уровнем положение кристаллов менялось, тогда нам нужно немного изменить логику игры, этим сегодня и займемся.

Для начала создадим новый пустой объект Game Controller, который будет контролировать случайное размещение кристаллов на игровом поле. К нему мы привяжем скрипт с этим же названием. Но с созданием скрипта пока отложим, а сейчас нужно сделать одно серьезное дело. Создадим еще один пустой объект Nodes. Этот объект будет родителем для большого количества дочерних объектов Node, которые будут размещаться в каждой ячейке на игровом поле. Для чего нам это нужно? А нужно нам это для того, чтобы определять координаты каждой ячейки, по расположению на ней объекта Node, и, зная эти координаты, помещать или не помещать в них (случайным образом) кристаллы. Итак, создадим объекты Node, по одному на ячейку и разместим их, каждый на своем месте. Но одну ячейку мы пропускаем, я думаю, уже понятно какую… ячейку занимаемую тарелкой. Во вкладке Hierarchy мы получаем следующую структуру: Теперь, когда все нужные объекты созданы, приступим к созданию программной части. В папке Scripts вкладки Project создадим новый скрипт и назовем его GameController. Его содержимое будет следующим:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class GameController : MonoBehaviour {

	public GameObject pickup;
	public int pickupCount;

	public List nodeList = new List();
	private GameObject node = null;

	// Use this for initialization
	void Start () {
		SpawnPickups ();
	}
	
	void SpawnPickups() {
		for (int i = 1; i <= pickupCount; i++) {
			node = nodeList[ Random.Range(0,nodeList.Count) ];
			Vector3 spawnPosition = node.transform.position;
			Quaternion spawnRotation = Quaternion.identity;
			Instantiate (pickup, spawnPosition, spawnRotation);
		}
	}

	// Update is called once per frame
	/*void Update () {
	
	}*/
}
После чего добавим созданный скрипт как компонент для объекта Game Controller. У компонента нужно заполнить 3 поля. Первый – Pickup, в него мы добавляем кристалл Pickup из папки Prefabs. Второй – Pickup Count, это количество кристаллов, которые нужно разместить, для окончания игры, нам их нужно 12. Третий – Node List, это массив пустых объектов Node, которые мы создали ранее. Их нужно все выбрать и перетащить на это поле, чтобы его заполнить, должно получиться так как показано на рисунке: Все. Теперь можно несколько раз перезапустить игру и будет видно, что кристаллы размещаются случайным образом.

Оставьте свой комментарий

Комментарии