За VR-играми: Flappy Bird

Наверное, все уже слышали о Flappy Bird; простая игра с боковой полосой прокрутки, изображающая птицу, летящую по трубам, которая стала вирусной несколько лет назад (если вы этого не сделали, игра, к сожалению, больше не доступна). Однако во время игры мне всегда было интересно, каково это - испытать игру с точки зрения птицы. Что бы случилось, если бы я был летучей птицей?

В этом месяце я смог запрограммировать игру Flappy Bird в виртуальной реальности и исполнить свое желание! Игра работает аналогично приложению и была запрограммирована в Unity, а визуальные эффекты и 3D-дизайн были созданы в Blender.

Действие игры происходит над рекой, где вдалеке видны горы (почему бы и нет), и игрок путешествует по большой зеленой трубе с каркасом безопасности, внутри которой есть трубы меньшего размера.

Играя в эту версию, вы можете либо щелкнуть триггер на гарнитуре Google Cardboard, чтобы прыгнуть, либо нажать клавишу пробела на своем компьютере. Смотрите видео ниже, чтобы узнать об игровом процессе:

Как работает игра:

  1. Перемещение птицы

Чтобы птица не перемещалась в случайных местах, важно, чтобы правила гравитации влияли на птицу / вас как игрока. Rigidbody позволяет игровым объектам в Unity действовать в соответствии с законами физики и позволяет игроку упасть, если он не нажимает кнопки для прыжка. .

Однако, когда птица умирает, ударившись о трубу, мы должны иметь возможность остановить все и заморозить экран до перезапуска игры (не спрашивайте меня, почему трубы убивают птиц, это просто игра). Приведенный выше код устраняет силы тяжести, когда птица умирает, и устанавливает ее скорость равной нулю.

С помощью Rigidbody программа позволяет птице двигаться вперед и прыгать в воздух, как показано в приведенном выше коде. Скорость и сила прыжка определяются общедоступными поплавками, найденными ранее в коде, которые также можно изменить в редакторе Unity, чтобы изменить сложность игры.

Однако важно отметить одну вещь: игра в настоящее время запрограммирована так, что птица прыгает при нажатии клавиши пробела. Если вы хотите играть в эту игру с гарнитурой Google Cardboard вместо компьютера, вам придется заменить Input.GetKeyDown («пробел») на Gvr.Viewer.Instance.Triggered вместо этого, что позволит вам прыгать каждый раз, когда вы нажимаете спусковой крючок на гарнитуре.

2. Создание трубок

Что делает Flappy Bird трудным для игры, так это случайность труб, которые появляются на протяжении всей игры. Никогда не знаешь, чего ожидать дальше, и для того, чтобы преодолеть различные пробелы, требуется немало навыков (которых мне не хватает).

Приведенный выше код связан с созданием этих печально известных трубок, причем первая часть гарантирует, что тип появляющейся трубы выбирается случайным образом из потенциальных формаций. В моей игре есть четыре разных типа трубок, однако можно добавить столько разных вариаций, сколько захотите. Кроме того, вторая половина оператора if позволяет расположить трубы на определенном расстоянии друг от друга и позволяет им порождать определенное количество юнитов от игрока.

3. Границы уровня

Еще одна важная часть игры - это границы, которые не позволяют птице упасть через карту или подняться над потолком. Хотя эти границы не видны, они все еще присутствуют под 3D-дизайном. Чтобы игра была бесконечной, эти границы должны следовать за птицей, когда она движется вперед, иначе она может в конечном итоге вырваться, и игрок сможет провалиться сквозь карту. Приведенный выше код устанавливает положение границ по оси z, эквивалентное положению игрока, чтобы он мог вечно следовать за птицей.

4. Текст на экране

Кроме того, у нас есть код, который работает с текстом, который появляется на экране во время игры. Если птица не мертва, счет игрока отображается на экране отдельно. В этой версии к счету добавляется одно очко после каждого путешествия птицы. Mathf.FloorToInt также гарантирует, что оценка является целым числом, поскольку, например, было бы довольно запутанно (и странно) иметь 13,589683 балла.

Когда птица умирает, на экране появляется сообщение «Игра окончена!» и показывает окончательный счет игрока. Эти слова появляются на экране на три секунды, после чего игра возобновляется, и счет снова обнуляется.

5. Столкновение с препятствиями

Наконец, невозможно было бы проиграть эту игру, если бы вы не могли столкнуться с препятствиями (хотя было бы весело побеждать все время). Поскольку в Unity уже есть функция Box Collider, она может определять, когда игрок соприкасается с трубами. Таким образом, когда птица касается трубы, общедоступное логическое значение dead устанавливается в True, а другие части кода останавливают игру и показывают окончательный результат.

3D-дизайн с помощью Blender

Для визуального аспекта и дизайна игры я использовал программное обеспечение под названием Blender, которое представляет собой набор инструментов для 3D-компьютерной графики с открытым исходным кодом, используемый для создания анимационных фильмов, визуальных эффектов, искусства, 3D-печатных моделей и т. Д. интерактивные 3D-приложения и видеоигры.

С помощью этого инструмента я смог создать дизайн труб и декорации игры, включая горы, реку и трубку, по которой проходит игрок. Поскольку я использую Blender во второй раз, на создание каждого дизайна у меня уходило очень много времени, и это навык, который я планирую развивать все больше и больше. Я уже заметил улучшения по сравнению с моей предыдущей игрой в виртуальной реальности, и я с нетерпением жду возможности увидеть, как я смогу поправиться позже!

И это все, что я объяснил кодировке моей последней игры в виртуальной реальности! На этой неделе я планирую создать еще один проект, так что следите за обновлениями, чтобы увидеть еще одно видео и статью. Если вы хотите узнать больше об игре, посмотрите видео ниже:

Если вам понравилась эта статья, поставьте лайк! Следуйте за мной в LinkedIn или посетите мой личный сайт, чтобы узнать больше о других проектах, которые я реализовал в прошлом!

Наконец, если у вас есть конструктивная критика или отзыв, обязательно оставьте комментарий ниже! Я хотел бы узнать, как улучшить свои статьи / стиль написания :)

📝 Прочтите этот рассказ позже в Журнале.

🗞 Просыпайтесь каждое воскресное утро и слышите самые интересные истории, мнения и новости недели, ожидающие в вашем почтовом ящике: Получите примечательный информационный бюллетень›