Привет, Хабр!
Сегодня вечером у меня появилось свободное время и в процессе бесполезного путешествия по просторам своего ноутбука обнаружил установленную Unity3d, до которой так и не дошли руки.
Ну и решил что-нибудь простое намутить.
Для начала откроем Unity и создадим проект (3D).
Заходим в меню GameObject>3D Object>Cube и получаем куб

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

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

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

В окне Rigidbody ставим галочку Use Gravity.
Если нажать на кнопку Play, то мы увидим падающий куб на пластину
Создаем новый куб и делаем из него подобие стены

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


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

Открываем его.
Следующие строки позволят нашему «герою» перемещаться вперед-назад
Для поворота героя используем эти строки
Когда дойдем до финиша надо бы сказать мол все, прошли лабиринт и выйти из игры.
Почти все готово, осталось только перетащить наш скрипт на «героя»!
Запускаем. Проверяем. Ничего не работает?
Правильно, мы ведь забыли задать значение переменным speed и rotationSpeed!
Вводим значения и запускаем

Добавляем аудио-дорожку Game Object>Audio>Audio Source и привязываем к игроку. В поле AudioClip переносим музыку.
Сохраняем нашу сцену.
Заходим в меню File>Build and Settings. Добавляем нашу сцену, выбираем платформу и собираем.
github
Сегодня вечером у меня появилось свободное время и в процессе бесполезного путешествия по просторам своего ноутбука обнаружил установленную Unity3d, до которой так и не дошли руки.
Ну и решил что-нибудь простое намутить.
Для начала откроем Unity и создадим проект (3D).
Приступим?
Заходим в меню GameObject>3D Object>Cube и получаем куб

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

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

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

В окне Rigidbody ставим галочку Use Gravity.
Если нажать на кнопку Play, то мы увидим падающий куб на пластину
Создаем лабиринт
Создаем новый куб и делаем из него подобие стены

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

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

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

Открываем его.
Объявляем переменные
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!
Вводим значения и запускаем

Добавляем аудио-дорожку Game Object>Audio>Audio Source и привязываем к игроку. В поле AudioClip переносим музыку.
Сохраняем нашу сцену.
Сборка
Заходим в меню File>Build and Settings. Добавляем нашу сцену, выбираем платформу и собираем.
Итог
github