[Из песочницы] Игра за час или убиваем время в Unity
Привет, Хабр!
Сегодня вечером у меня появилось свободное время и в процессе бесполезного путешествия по просторам своего ноутбука обнаружил установленную 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