[Из песочницы] Tower Defence на движке Unity — Часть 1

Привет всем! Это моя первая статья для хабра. И в ней я хотел бы рассказать о том, как создать маленькую 3D игру жанра Tower Defence на движке Unity. Прошу пожаловать под кат! Только осторожно, там очень много картинок…
image

Начало


Запустим Unity. У меня стоит Unity Personal. Создадим новый проект под названием «MyTowerDefence». Игра будет трёхмерной, аналитику Unity мы использовать не будем.
image

Я настроил рабочую область, так как мне удобно, вы можете оставить всё как есть у вас. При создании нового трёхмерного проекта по умолчанию создаётся камера и источник света. В двумерном проекте будет только камера.

Создадим 3 новые папки:

  • Папку «Materials», она будет хранить материалы объектов.
  • Папку «Prefabs», она будет хранить наши заготовки объектов с настроенными компонентами, скриптами и иерархией дочерних объектов.
  • Папку «Scripts», она будет хранить скрипты.

image

Сторожевая башня


Создадим новый игровой объект куб, выбрав в главном меню «GameObject → Cube». Дадим ему новое имя «Body» в переводе с английского «Тело». Это будет тело сторожевой башни.

Теперь создадим пустой объект. Его не видно на сцене. Назовём его «Tower» — «Башня». В данном случае он будет главным объектом дерева сторожевой башни. Позицию созданных объектов поставим по нулям.

image

Закинем объект «Body» в объект «Tower».
image

«Body» стал дочерним объектом объекта «Tower». Положение, вращение и масштаб дочерних объектов зависит от аналогичных параметров родительского объекта. Проще говоря, если перетащить родительский объект, то все дочерние объекты последуют за своим родителем.

Изменим масштаб тела башни.

image

Создадим новый объект куб. Позицию выставим в ноль и немного сплющим куб по координате Y.
image

Назовём куб «Head» — «Голова». Поставим голову на место и приклеим её к объекту «Tower».
image

Теперь нам нужна пушка. Создаём новый куб с именем «Gun» — «Пушка». Делаем так, что бы куб хотя бы отдалённо напоминал её.
image

Нужен ещё один вспомогательный объект, который будет центром вращения пушки. Создадим пустой объект и привяжем к нему объект «Gun». А его привяжем к объекту «Tower».
image

Настраиваем позицию пушки.
image

image

Сохраним сцену с любым именем. Создадим папку для хранения сцен и поместим созданную сцену туда. Теперь наведём красоту. В папке материалов создаём новый материал с именем «TowerBody».
image

Зададим цвет и применим материал к телу башни, перетащив его из окна «Project» на объект.
image

Дублируем материал с новым именем «TowerHead». Выполняем аналогичные действия для головы. Также поступим и для пушки.
Всё, красоту навели.
image

Попробуем сымитировать повороты сторожевой башни. Тут мы сразу обнаружим недочёт. Голова вращается, а пушка занята своими делами.
image

Заставим её вращаться вместе с головой, переместив вспомогательный объект пушки в объект «Head».
image

Повращаем пушку. И тут мы видим, что то необъяснимое… (Мелодия «Секретные материалы»)
image

Ну да ладно, к этому мы вернёмся дальше, когда будем вращать пушку при помощи скрипта. Создадим из объекта «Tower» новый префаб, перетащив его в папку «Prefabs».
image

Оригинал башни удаляем со сцены.

Поле битвы


Создадим объект плоскость. На плоскости будет происходить вся тусовка. Применим к ней любой материал.
image

Изменим положение камеры, так что бы было видно всю плоскость под углом.
image

Переименуем плоскость в «Ground».

Нам нужна платформа для возможности установки на ней сторожевой башни. Для этого создадим куб, позицию проставим по нулям и сплющим его по оси Y. Также, отключим отбрасывание тени. Назовём куб «TowerPlace».

image

Закинем его в папку префабов. Теперь дублируем объект на сцене, нажав сочетание клавиш CTRL+D. После, зажав CTRL перетащим объект в сторону. Этим действием мы перетащили новую копию объекта через привязку к сетке, которая позволяет перемещать объект на одинаковую длину шагов. Сейчас шаг сетки равен единице.
image

Вот кстати интересная особенность префабов. Если мы изменим, как сейчас, размер объекта, и нажмём кнопку «Apply» — «Применить», то новые параметры этого префаба распространятся на все его копии.
image

Теперь нужно заполнить копиями объекта всю плоскость. Ах да, забыл выставить позицию плоскости по нулям, как раз из-за этого всё отображается криво.
image

Камера по той же причине расположена неправильно. Создадим новый пустой объект «TowerPlaces» хранящий объекты мест для установки башен.
image

Теперь сформируем дорожку для движения ботов, простым удалением объектов «TowerPlace».
image

Waypoints


Создаём пустой объект для вэйпоинта. Вэйпоинты — это точки маршрута, по которым перемещаются боты. Позицию ставим по нулям. Зададим иконку для невидимого объекта, что бы его было видно в окне редактора.
image

Приподнимем объект по оси Y что бы он не сливался с плоскостью. Неважно на сколько, главное не трогаем координаты X и Z, они должны быть по нулям.
image

Закинем его в папку префабов и переместим оригинал к началу пути с зажатой клавишей CTRL. Заметьте координаты объекта, сохраняют своё целочисленное значение по оси X и Z.
image

Дублируем вэйпоинты и размещаем на краях поворота, держа при этом зажатой клавишу CTRL. Делаем это всё до конца пути.
image

Поместим все вэйпоинты в пустой объект.
image

Важно проверить порядок их расположения, иначе боты у нас начнут гулять, где захотят.

Spawner


Создадим куб, который будет работать спаунером, т.е. заниматься созданием ботов на сцене. Занулим позицию и поставим объект перед на началом пути. Можно изменить его масштаб на своё усмотрение.
image

В папке материалов создадим новый материал. Присвоим его спаунеру. Становится красиво.
image

В папке скриптов создаём новый скрипт с именем «Spawner». Перейдём в редактор кода двойным щелчком по скрипту. Редактором кода может быть Visual Studio, MonoDevelop или вовсе обычный блокнот. На работу скрипта это никак не повлияет, если только на удобство. А на ошибки укажет редактор Unity.

Завершение первой части


В пятой версии движка по умолчанию используется Visual Studio, но при необходимости среду разработки можно сменить в настройках редактора Unity.
image

Для большей наглядности можно посмотреть видеоурок:

Спасибо за внимание! Конец первой части.

Комментарии (0)

© Habrahabr.ru