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

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

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

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

image1

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

image2

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

image3

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

image4

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

Setting up the playable area

We're going to create our main scene with a plain Node as its root. In the Scene dock, click the Add Node button represented by a "+" icon in the top-left and double-click on Node. Name the node "Main". Alternatively, to add a node to the scene, you can press Ctrl + a (or Cmd + a on macOS).

image5

Save the scene as Main.tscn by pressing Ctrl + s (Cmd + s on macOS).

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

image6

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

image7

To create a shape, with the CollisionShape selected, head to the Inspector and click the [empty] field next to the Shape property. Create a new Box Shape.

image8

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

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

image9

Примечание

In 3D, translation and size units are in meters. The box's total size is twice its extents: 60 by 60 meters on the ground plane and 2 units tall. The ground plane is defined by the X and Z axes, while the Y axis represents the height.

Collision shapes are invisible. We need to add a visual floor that goes along with it. Select the Ground node and add a MeshInstance as its child.

image10

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

image11

Once again, it's too small by default. Click the cube icon to expand the resource and set its Size to 60, 2, and 60. As the cube resource works with a size rather than extents, we need to use these values so it matches our collision shape.

image12

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

We're going to move the ground down so we can see the floor grid. Select the Ground node, hold the Ctrl key down to turn on grid snapping (Cmd on macOS), and click and drag down on the Y axis. It's the green arrow in the move gizmo.

image13

Примечание

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

image14

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

image15

Примечание

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

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

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

image16

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

image17

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