Мы уже рассказывали, как научиться разработке на Unity. В написанной совместно с онлайн-университетом GeekBrains статье мы рассмотрим пошаговое создание собственной игры с использованием 2D Game Kit.
2D Game Kit
Unity подходит не только для сложных трехмерных игр или работы с виртуальной и дополненной реальностью – движок прекрасно справляется и с 2D-классикой. Мы начнем с простого и разберемся в его игровой механике на примере 2D Game Kit – набора инструментов, шаблонов и настроек для быстрой разработки. По сути пакет представляет собой готовую игру-платформер, для которой можно создавать новые уровни, а также менять свойства существующих.
![<span>2D Game Kit</span>](https://media.proglib.io/posts/2021/04/14/91c9df2beeec876fc50a5dca208a09d0.png)
Приступим.
Установка и создание проекта
![<span>Unity Hub</span>](https://media.proglib.io/posts/2021/04/14/d6dc809ef00056524d5857792416b59e.png)
Для начала нужно скачать и установить Unity Hub – это лаунчер, который упрощает управление проектами и версиями Unity. Затем придется зарегистрироваться в экосистеме и создать Unity ID. Выберите лицензию Personal (персональную) и отметьте галочкой подходящий вариант применения: Unity позволяет использовать движок бесплатно для некоммерческих целей, а также компаниям с годовым доходом меньше $100 000.
![🎮 Основы разработки игр на Unity](https://media.proglib.io/posts/2021/04/14/6ceb1283c2fa6e844254cd609cf14bd9.png)
После активации лицензии можно установить последнюю LTS-версию Unity с необходимыми параметрами из раздела Installs
. Выберите платформы, на которых должна запускаться игра, и дождитесь окончания инсталляции.
![🎮 Основы разработки игр на Unity](https://media.proglib.io/posts/2021/04/14/bcd8cacc622eedc0001e9ed4c0ab0485.png)
N.B. На слабых машинах процесс может занять довольно длительное время – запаситесь печеньками и кофе.
![🎮 Основы разработки игр на Unity](https://media.proglib.io/posts/2021/04/14/532a1f27722feee34a5728d5165e06e5.png)
Когда Unity уже установлена, нужно создавать проект. Вы можете взять его из раздела Learn
, выбрав там 2D Game Kit или добавив его в ваши Assets
на сайте (не забудьте предварительно залогиниться под своим Unity ID).
![🎮 Основы разработки игр на Unity](https://media.proglib.io/posts/2021/04/14/2142d9660ddb4cd65844cf274c6a9920.png)
![🎮 Основы разработки игр на Unity](https://media.proglib.io/posts/2021/04/14/5b734ec936878c7166afc369d053308d.png)
Создание новой сцены и карты уровня
2D Game Kit позволяет автоматически создать новую сцену по умолчанию. Она уже содержит персонажа Эллен, небольшую платформу, интерфейс здоровья, а также все нужное для передвижения и атаки. Для этого откройте проект и выберите раздел Kit Tools –> Create New Scene
в верхнем меню.
![🎮 Основы разработки игр на Unity](https://media.proglib.io/posts/2021/04/14/8071e009b1a28fc44f357b03f43df578.png)
![🎮 Основы разработки игр на Unity](https://media.proglib.io/posts/2021/04/14/9d1d5f7c084f03f99204e96b315371ed.png)
2D Game Kit использует функцию Tilemap в Unity, которая поможет быстро и легко нарисовать уровень. Все уже настроено, так что можно сразу приступить к работе. В верхнем меню выберите Window –> 2D –> Tile Palette
, и у вас откроются две палитры плиток, которые позволяют рисовать уровни.
![🎮 Основы разработки игр на Unity](https://media.proglib.io/posts/2021/04/14/5c9c4a1063432139fbb701a0df5be142.png)
![🎮 Основы разработки игр на Unity](https://media.proglib.io/posts/2021/04/14/97bef1b8ab50771097d4f84a429a58bd.png)
Разработчику доступно два стиля спрайтов Grassy Rocks
и Alien Structure
. Выберите тот, который больше нравится, и начните рисовать карту. Визуальные инструменты похожи на обычный графический редактор, так что проблем с ними не возникнет. Блоки можно рисовать, редактировать или стирать.
Когда карта будет готова, можно сразу перейти в окно Game
визуального редактора и нажать Play, чтобы посмотреть результат. Управление классическое: A
, D
, S
, Space
для прыжка. O
, K
– выбор оружия.
![🎮 Основы разработки игр на Unity](https://media.proglib.io/posts/2021/04/14/018c0a356346cf931e91c7025d8a3a55.gif)
Двери и движущиеся платформы
![🎮 Основы разработки игр на Unity](https://media.proglib.io/posts/2021/04/14/473e05e62a63a514f7836d30859bf878.png)
В меню проекта внизу нужно найти раздел Prefabs –> Interactables
, где находится ряд игровых атрибутов. Возьмем для начала движущуюся платформу и перетащим ее в нашу сцену. После этого она автоматически появится в иерархии сцены в левом окне редактора. Если выбрать ее, то возле платформы в визуальном редакторе появится красная пунктирная линия, обозначающая путь ее движения.
Мы можем перетащить ее в любое место. Путь платформы можно сделать сложнее, заставив ее двигаться по кругу. Для этого нужно воспользоваться кнопкой Add Node
в окне инспектора, который находится справа. Добавьте несколько точек-нод и соедините их, сменив флажок BACK_FORTH
на LOOP
в строке Looping
инспектора панели. Стоит обратить внимание, что большая часть свойств всех игровых объектов меняется в инспекторе.
![🎮 Основы разработки игр на Unity](https://media.proglib.io/posts/2021/04/14/60002844bddee454e83ff27c9e8be7d2.png)
Попробуем также добавить дверь: на ее примере мы разберемся, как настраивать взаимосвязь между сценариями разных объектов. Находим ее там же в разделе Prefabs –> Interactables
и перетаскиваем в редактор.
Чтобы открыть дверь, добавим нажимную панель на полу: она обозначена как Pressure Pad
. В инспекторе панели найдем раздел Pressure Pad (Script)
, в одном из окон которого есть раздел On Pressed ()
. Добавим там новое действие при нажатии Runtime Only
и в открывшееся поле перетащим из иерархии сцены нашу дверь, которая Door
.
![🎮 Основы разработки игр на Unity](https://media.proglib.io/posts/2021/04/14/d0c9c25daf91bd27c0711578117e7075.png)
Теперь в соседнем окне с надписью No Function
выберем из выпадающего списка Animator –> Play (string)
. Напишем в появившемся поле DoorOpening
. Это готовый скрипт для из раздела Art –> Animations –> AnimationClips –> Interactables
со сценариями для существующих объектов.
![🎮 Основы разработки игр на Unity](https://media.proglib.io/posts/2021/04/14/524779458d0f8e70894a1d1c960db639.png)
Телепортация
Персонажа можно телепортировать из одной области сцены в другую или между разными уровнями. Добавим к уровеню два телепорта.
![🎮 Основы разработки игр на Unity](https://media.proglib.io/posts/2021/04/14/f8e1da173dfbb381d3c38a189fdca6e1.png)
В настройках телепорта мы видим раздел Transition Point (Script)
, в котором в соответствующих окнах можно выбрать телепортируемый объект (в нашем случае Elen) и тип телепортации (Same Scene), перетащить из раздела иерархии точку назначения в Destination Transform
(это будет второй телепорт), а также указать условие перемещения – при входе (On Trigger Enter
) или при нажатии кнопки действия (E Interact Pressed
). Также телепортироваться можно в другие сцены, например, для перехода между уровнями игры через настройку TransitionDestination
, которая находится в Scene Control
.
Враги
У нас есть два готовых врага в наборе: Chomper и Spitter. Их можно найти в окне проекта в Prefabs –> Enemies
.
![🎮 Основы разработки игр на Unity](https://media.proglib.io/posts/2021/04/14/fb9ad2f754536202bc4e8707efa6c997.jpg)
Оба они контролируются компонентом Enemy Behavior
в инспекторе. Вы можете использовать этот компонент для настройки таких свойств, как скорость врага, поле зрения (FOV), здоровье и многое другое. Добавив одного из них в сцену, можно поменять настройки обнаружения персонажа, дальность и угол зрения, скорость движения и реакции.
![🎮 Основы разработки игр на Unity](https://media.proglib.io/posts/2021/04/14/aa2fcd24cbb05e22b546313d620839d9.png)
Урон и украшения
За нанесения урона у нас отвечает функция Damager
, ее можно прикрутить к любому игровому объекту и настроить на свое усмотрение. Добавим падающий ящик, который персонаж будет сбрасывать на врагов.
![🎮 Основы разработки игр на Unity](https://media.proglib.io/posts/2021/04/14/0389baab45f690d70bce5eb4a25bf5b8.png)
Перетащив ящик на сцену, нажимаем в инспекторе Add Component
и добавляем Damager
. Первоначально он не будет совпадать с силуэтом ящика, поэтому его нужно вручную подогнать под размер объекта. Также зададим размер наносимого урона, а в разделе HittableLayers
укажем врагов в качестве цели, чтобы случайно не повредить себя.
![🎮 Основы разработки игр на Unity](https://media.proglib.io/posts/2021/04/14/f6337bbedf4b28b92ab6d86ecaf3ea95.png)
Рекомендуем также создать пустой объект в самом низу сцены по всей ее длине и добавить в него Damager, чтобы реализовать механизм смерти игрока при падении. В противном случае Elen будет бесконечно падать вниз, что не особенно логично.
Art –> Sprites –> Environment
есть множество украшений, которые можно добавить в сцену. Пакет 2D Game Kit вообще содержит кучу готовых кастомизируемых объектов. Поскольку Unity поддерживает импорт собственных спрайтов, изображений и объектов, простор для фантазии почти безграничен.Сборка игры
Будем считать, что сцена уже готова и вы хотите протестировать ее вне редактора в виде отдельной игры. Чтобы не добавлять в проект созданные по умолчанию в 2D Game Kit сцены, стоит слегка изменить стартовые настройки. Их можно найти в разделе Scenes
под названием Start
. Откройте в редакторе объект TransitionStart
, и выберете свою сцену в строке New Scene Name
.
![🎮 Основы разработки игр на Unity](https://media.proglib.io/posts/2021/04/14/1e710010cd57683e373de23131e4996d.png)
Теперь при нажатии Start игрок сразу попадает в вашу сцену, минуя предустановленные уровни.
![🎮 Основы разработки игр на Unity](https://media.proglib.io/posts/2021/04/14/d0a970ed49652c2d6df3296aef4f127f.png)
Перейдем в меню работы с файлами к разделу Build Settings
, где нужно выбрать необходимые сцены: Start, UIMenus, Loading и созданная вами. Ниже мы выбираем платформу, под которую будем собирать проект (при необходимости можно добавить поддержку требуемой архитектуры). Проверьте или измените настройки в разделе Player Settings
и нажмите Build
. Выберите папку назначения и дождитесь окончания сборки.
Игра готова, можно тестировать и делиться ею с друзьями.
Заключение
Мы лишь познакомили читателей с основами интерфейса Unity на примере комплекта 2D Game Kit. Более подробные руководства на английском языке легко найти в соответствующем разделе официального сайта Unity. Также рекомендуем ознакомится с инструкцией по созданию 2D пин-понга на Unity.
Хочу научиться программировать с нуля, но не знаю, с чего начать. Что делать?
Можно учиться самостоятельно (долго) или пойти на курсы с преподавателями (быстро). Плюс нужно учитывать, что джунов много, конкуренция выше и работодатели повышают порог вхождения при найме на работу. Чтобы получить актуальные знания, мы в proglib.academy запустили курсы:
- Основы программирования на Python.
- Профессия Python-разработчик.
- Алгоритмы и структуры данных.
- Математика для Data Science.
- Профессия Data Science.
- Frontend Basic: принцип работы современного веба.
- Профессия Фронтенд-разработчик.
- Обработка естественного языка. Полный курс.
На подходе еще больше 10 курсов для взрослых и детей.
Комментарии