Настройка игровой зоны

Для начала мы настроим игровую область. Давайте начнем с импорта стартовых ресурсов и настройки игровой сцены.

Мы подготовили проект Godot с 3D-моделями и звуками, которые мы будем использовать в этом уроке, ссылка на который находится на странице с содержанием. Если вы ещё не сделали этого, вы можете скачать архив здесь: Ресурсы Squash the Creeps.

После загрузки распакуйте архив .zip на своем компьютере. Откройте менеджер проектов Godot и нажмите кнопку Импорт.

image1

В окне импорта введите полный путь к только что созданному каталогу squash_the_creeps_start/. Вы можете нажать кнопку Обзор справа, чтобы открыть браузер файлов и перейти к папке, содержащей файл project.godot.

image2

Нажмите Импортировать и редактировать, и проект откроется в редакторе.

image3

Начальный проект содержит иконку и две папки: art/ и fonts/. В них вы найдёте ресурсы, которые мы будем использовать в игре.

image4

Здесь имеются две 3D-модели player.glb и mob.glb, материалы для этих моделей и музыкальный трек.

Настройка игровой зоны

Создадим нашу главную сцену с помощью простого узла Node в основании. В панели Сцена нажмите на кнопку Добавить Узел, представленную в виде иконки "+" в верхнем левом углу и дважды нажмите на Node. Назовите узел "Главный". Либо же добавьте узел к сцене, Вы можете нажать Ctrl + a (или Cmd + a на macOS).

image5

Сохраните сцену. Нажмите "Сцена" -> "Сохранить сцену" в верхней панели или нажмите сочетание клавиш Ctrl + S на Windows/Linux или Cmd + S на Mac.

Мы начнём с добавления пола, который предотвратит игроков от падения. Чтобы создать такие статические коллайдеры, как пол, стены или потолок, Вы можете использовать узлы StaticBody. Им необходимы дочерние узлы CollisionShape, чтобы определить область столкновения. С помощью выбранного узла Main добавьте узел StaticBody, затем CollisionShape. Переименуйте StaticBody как Ground.

image6

Предупреждающая надпись рядом с CollisionShape появляется, потому что мы не определились с формой. Если Вы нажмёте на иконку, появится всплывающее окно, которое предоставит Вам больше информации.

image7

Чтобы создать фигуру с выбранной фигурой столкновения (CollisionShape), откройте Inspector и нажмите на поле [empty] рядом с параметрами Shape. Создайте новую фигуру BoxShape.

image8

Форма коробки идеальна для плоской поверхности и стен. Её толщина делает её надёжной в качестве преграды для быстро двигающихся объектов.

Каркас коробки появляется в окне просмотра с тремя оранжевыми точками. Вы можете нажать на них и перетащить для того, чтобы отредактировать экстенты фигуры в интерактивном режиме. Мы также можем с точностью настроить масштаб в инспекторе. Нажмите на BoxShape, чтобы расширить источник. Установите её Extents на 30 по оси X , 1 по оси Y, и на 30 по оси Z.

image9

Примечание

В 3D все измеряется в метрах. Общий размер коробки в два раза превышает её размеры: 60 на 60 метров на плоской поверхности и ``2``единицы в высоту. Горизонтальная поверхность определяется осями X и Z, в то время как ось Y определяет высоту.

Коллизии являются невидимыми. Нам необходимо добавить видимый пол, который будет их использовать. Выберите узел Ground и добавьте MeshInstance, как его дочерний узел.

image10

Нажмите на поле Mesh в Inspector и создайте источник CubeMesh, чтобы сделать видимый куб.

image11

Ещё раз, по умолчанию он слишком мал. Нажмите на иконку куба, чтобы открыть его свойства и установите его Размер на 60, 2, и 60. Так как ресурс (resource) "куб" работает с размером, а не с объемом, нам необходимо установить эти значения так, чтобы они совпали с коллизиями.

image12

Вы должны видеть широкую серую панель, которая покрывает сетку, и синие с красными оси в окне просмотра.

Переместим поверхность вниз, чтобы мы могли видеть сетку пола. Выберите узел Ground, зажмите клавишу Ctrl, чтобы включить привязку к сетке (Cmd на macOS), а затем нажмите и перетащите вниз на ось Y. Это зелёная стрелка в осях.

image13

Примечание

Если Вы не видите манипулятор 3D-объектов, как на картинке сверху, убедитесь в том, что Select Mode находится в активном состоянии на панели инструментов сверху.

image14

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

image15

Примечание

Перемещение узла Ground вниз сдвигает оба дочерних узла вместе с ним. Убедитесь в том, что Вы перемещаете узел Ground, а не MeshInstance or the CollisionShape.

Давайте добавим направленный свет так, чтобы наша сцена не была полностью серой. Выберите узел Main и добавьте DirectionalLight, как его дочерний узел. Нам необходимо передвинуть и провернуть его. Переместите его вверх, нажав и перетащив зелёную стрелку манипулятора на красную арку и прокрутив ее вокруг оси X, до тех пор пока поверхность не будет освещена.

В Inspector включите Shadow -> Enabled, нажав на переключатель.

image16

На данном этапе ваш проект должен выглядеть следующим образом.

image17

Это наш отправной пункт. В следующей части мы будем работать с сценой игрока и основами передвижений.