[Из песочницы] Игра за час или убиваем время в Unity

Привет, Хабр!

Сегодня вечером у меня появилось свободное время и в процессе бесполезного путешествия по просторам своего ноутбука обнаружил установленную Unity3d, до которой так и не дошли руки.
Ну и решил что-нибудь простое намутить.

Для начала откроем Unity и создадим проект (3D).

Приступим?


Заходим в меню GameObject>3D Object>Cube и получаем куб

image

Инструментом Scale растягиваем наш куб и уменьшаем высоту, в итоге должна получиться пластина

image

Добавляем еще 1 куб и даем ему имя player. Привязываем камеру к «игроку»

image

Нажимаем Add Component>Physics>Rigidbody

image

В окне Rigidbody ставим галочку Use Gravity.

Если нажать на кнопку Play, то мы увидим падающий куб на пластину

Создаем лабиринт


Создаем новый куб и делаем из него подобие стены

image

Дублируем стены и создаем из них лабиринт. Точку финиша украсим выпирающей плитой.
image

Добавляем цвета


image

Самое время кодить


Создаем новый C# скрипт, который называем playerActions

image

Открываем его.

Объявляем переменные


public GameObject player;
public int speed;
public int rotationSpeed;


Функция Start ()



player = (GameObject)this.gameObject;


Функция Update ()


Следующие строки позволят нашему «герою» перемещаться вперед-назад


if (Input.GetKey (KeyCode.W)) {
	player.transform.position += transform.forward * speed * Time.deltaTime;
}
if (Input.GetKey (KeyCode.S)) {
	player.transform.position -= transform.forward * speed * Time.deltaTime;
}


Для поворота героя используем эти строки


if (Input.GetKey (KeyCode.D)) {
	player.transform.Rotate (Vector3.up * rotationSpeed*Time.deltaTime);
}
if (Input.GetKey (KeyCode.A)) {
	player.transform.Rotate (Vector3.down * rotationSpeed*Time.deltaTime);
}


Функция OnGUI ()


Когда дойдем до финиша надо бы сказать мол все, прошли лабиринт и выйти из игры.


if (player.transform.position.z >= 0.99 && player.transform.position.z <= 1.75 &&  player.transform.position.x <= -1.1 && transform.position.x>=-1.49) {
if (GUI.Button (new Rect (200, 200, 800, 400), "You are win!\nExit"))
	{Application.Quit ();}
	ime.timeScale = 0;


Ну вот и все


Почти все готово, осталось только перетащить наш скрипт на «героя»!
Запускаем. Проверяем. Ничего не работает?

Правильно, мы ведь забыли задать значение переменным speed и rotationSpeed!

Вводим значения и запускаем

image

Добавляем аудио-дорожку Game Object>Audio>Audio Source и привязываем к игроку. В поле AudioClip переносим музыку.

Сохраняем нашу сцену.

Сборка


Заходим в меню File>Build and Settings. Добавляем нашу сцену, выбираем платформу и собираем.

Итог


github

© Habrahabr.ru