Work in progress

The content of this page was not yet updated for Godot 4.2 and may be outdated. If you know how to improve this page or you can confirm that it's up to date, feel free to open a pull request.

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

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

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

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

../../_images/01.import_button.webp

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

../../_images/02.browse_to_project_folder.png

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

../../_images/03.import_and_edit.png

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

../../_images/04.start_assets.png

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

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

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

../../_images/05.main_node.png

Сохраните сцену как main.tscn, нажав Ctrl + s (Cmd + s на macOS).

Мы начнём с добавления пола, который предотвратит игроков от падения. Чтобы создать такие статические коллайдеры, как пол, стены или потолок, вы можете использовать узел StaticBody3D. Ему необходим дочерний узел CollisionShape3D, чтобы определить область столкновения. Выбрав узел Main, добавьте узел StaticBody3D, затем CollisionShape3D. Переименуйте StaticBody3D в Ground.

../../_images/adding_static_body3D.webp

Ваше дерево сцены должно выглядеть так

../../_images/06.staticbody_node.png

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

../../_images/07.collision_shape_warning.png

Чтобы создать форму, выберите узел CollisionShape3D, перейдите в Инспектор и щелкните по полю <пусто> рядом со свойством Shape. Создайте новый BoxShape3D.

../../_images/08.create_box_shape3D.jpg

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

В окне просмотра появится каркас прямоугольника с тремя оранжевыми точками. Вы можете нажать на них и перетащить для того, чтобы отредактировать размеры фигуры в интерактивном режиме. Мы также можем с точностью настроить размер в инспекторе. Нажмите на BoxShape3D, чтобы расширить источник. Установите его размер равным 60 по оси X, 2 по оси Y и 60 по оси Z.

../../_images/09.box_size.webp

Collision shapes(то есть формы столкновения, или коллизии) являются невидимыми. Нам необходимо добавить видимый пол. Выберите узел Ground и добавьте MeshInstance3D, как его дочерний узел.

../../_images/10.mesh_instance3d.png

В инспекторе, щелкните на поле рядом с Mesh и создайте BoxMesh, чтобы создать видимый куб.

../../_images/11.box_mesh.webp

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

../../_images/12.cube_resized.png

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

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

../../_images/move_gizmo_y_axis.webp

Примечание

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

../../_images/14.select_mode_icon.png

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

../../_images/15.translation_amount.png

Примечание

Moving the Ground node down moves both children along with it. Ensure you move the Ground node, not the MeshInstance3D or the CollisionShape3D.

В конечном итоге, Transform.position.y у Ground должен быть -1

../../_images/ground_down1meter.webp

Давайте добавим directional light(направленный свет), чтобы наша сцена не была серой. Выберите узел Main и добавьте дочерний узел DirectionalLight3D.

../../_images/create_directional_light3d.webp

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

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

../../_images/16.turn_on_shadows.webp

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

../../_images/17.project_with_light.webp

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