Налаштування ігрової зони

У першій частині ми збираємося створити ігрову зону. Почнемо з імпорту стартових активів і налаштування ігрової сцени.

We've prepared a Godot project with the 3D models and sounds we'll use for this tutorial, linked in the index page. If you haven't done so yet, you can download the archive here: Squash the Creeps assets.

Завантаживши його, розпакуйте архів .zip на комп’ютері. Відкрийте менеджер проектів Godot і натисніть кнопку Імпортувати.

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

In the import popup, enter the full path to the freshly created directory 3d_squash_the_creeps_starter/. You can click the Browse button on the right to open a file browser and navigate to the project.godot file the folder contains.

../../_images/02.browse_to_project_folder.webp

Click Import to open the project in the editor.

../../_images/03.import_and_edit.webp

Може з’явитися вікно зі сповіщенням про те, що проект створено старішою версією Godot. Натисніть Конвертувати повний проект, щоб конвертувати проект у поточну версію Godot.

../../_images/import_project_to_4.x_prompt.webp

If it doesn't open immediately open the project from your project list.

Початковий проект містить піктограму та дві папки: art/ і fonts/. Там ви знайдете активи та музику, яку ми будемо використовувати в грі.

../../_images/04.start_assets.webp

Там є дві 3D-моделі, player.glb та mob.glb, деякі матеріали, які належать цим моделям, і музичний трек.

Налаштування зони гри

Ми збираємося створити нашу головну сцену з простим Node як її коренем. У док-станції Scene натисніть кнопку Add Child Node, представлену значком «+» у верхньому лівому куті, і двічі клацніть на Node. Назвіть вузол Main. Альтернативним способом перейменування вузла є клацання правою кнопкою миші Node і вибір Rename (або F2). Крім того, щоб додати вузол до сцени, ви можете натиснути Ctrl + A (Cmd + A на macOS).

../../_images/05.main_node.webp

Збережіть сцену як main.tscn, натиснувши Ctrl + S (Cmd + S на macOS).

Ми почнемо з додавання підлоги, яка запобігатиме падінню персонажів. Для створення статичних коллайдерів, таких як підлога, стіни чи стелі, ви можете використовувати вузли StaticBody3D. Їм потрібні дочірні вузли CollisionShape3D для визначення області зіткнення. Вибравши вузол Main, додайте вузол StaticBody3D, а потім CollisionShape3D. Перейменуйте StaticBody3D на Ground.

../../_images/adding_static_body3D.webp

Ваше сцена має виглядати так

../../_images/06.staticbody_node.webp

Біля CollisionShape3D з’являється попереджувальний знак, оскільки ми не визначили його форму. Якщо натиснути піктограму, з’явиться спливаюче вікно з додатковою інформацією.

../../_images/07.collision_shape_warning.webp

Для створення форми виберіть CollisionShape3D, перейдіть до Інспектора і натисніть поле [порожньо] поруч із властивістю Shape. Виберіть Новий Box Shape3D.

../../_images/08.create_box_shape3D.webp

Форма коробки ідеально підходить для плоскої землі і стін. ЇЇ товщина робить надійним блокування навіть об'єктів, що рухаються із великою швидкістю.

Каркас коробки з’являється у вікні перегляду з трьома помаранчевими крапками. Ви можете клацнути та перетягнути їх, щоб інтерактивно редагувати розміри фігури. Також ми можемо точно встановити розмір в інспекторі. Натисніть на BoxShape3D, щоб розгорнути ресурс. Встановіть його Size на 60 для осі X, 2 для осі Y і 60 для осі Z.

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

Форми зіткнення невидимі. Нам потрібно додати візуальну підлогу, з якою будуть вони будуть стикатися. Виберіть вузол землі Ground та додайте MeshInstance3D в якості нащадка.

../../_images/10.mesh_instance3d.webp

У Інспекторі натисніть на поле поруч з Mesh і створіть ресурс BoxMesh (Коробка меша), щоб створити видимий куб.

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

Знову ж таки, він занадто малий за замовчуванням. Клацніть піктограму куба, щоб масштабувати його, і встановіть Size на 60, 2 та 60.

../../_images/12.cube_resized.webp

Ви повинні побачити широку сіру плиту, яка покриває сітку і сині та червоні осі в вікні перегляду.

Ми перемістимо землю вниз, щоб побачити сітку підлоги. Для цього можна використовувати функцію прив’язки сітки. Прив’язку сітки можна активувати двома способами в 3D-редакторі. Ґ Перший – натиснути кнопку Use Snap (або натиснути клавішу Y). По-друге, вибравши вузол, перетягнувши дескриптор гізмо, потім утримуючи Ctrl, продовжуючи натискати, щоб увімкнути прив’язку, доки Ctrl утримується.

../../_images/use_snap.webp

Почніть із налаштування прив’язки за допомогою бажаного методу. Потім перемістіть вузол Ground за допомогою осі Y (зелена стрілка на gizmo).

../../_images/move_gizmo_y_axis.webp

Примітка

Якщо маніпулятор 3D-об'єктів не відображається, як на зображенні вище, переконайтеся, що Режим виділення активний на панелі інструментів над вікном перегляду.

../../_images/14.select_mode_icon.webp

Перемістіть землю вниз на 1 метр. Мітка в нижньому лівому куті вікна перегляду повідомляє вам на скільки ви перетягуєте вузол.

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

Примітка

Разом із вузлом Ground вниз тягнуться і обоє його нащадків. Переконайтеся, що ви переміщуєте вузол Ground, а не MeshInstance3D, чи CollisionShape3D.

Врешті-решт transform.position.y для Ground має бути -1

../../_images/ground_down1meter.webp

Давайте додамо спрямоване світло, щоб наша сцена не була повністю сірою. Виділіть вузол Main і додайте дочірній вузол DirectionalLight3D.

../../_images/create_directional_light3d.webp

Нам потрібно перемістити та повернути вузол DirectionalLight3D. Перемістіть його вгору, клацнувши та перетягнувши зелену стрілку маніпулятора, а потім клацніть і перетягніть червону дугу, щоб повернути його навколо осі X, доки земля не засвітиться.

В Інспекторі для відображення тіней покладіть галочку в Shadow -> Enabled.

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

На даний момент ваш проект повинен виглядати так.

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

Це наша відправна точка. У наступній частині ми будемо працювати над сценою гравця і базовим рухом.