Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

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

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

Ми підготували проєкт Godot із 3D-моделями та звуками, які ми використовуватимемо для цього посібника, посилання на які є на сторінці індексу. Якщо ви ще цього не зробили, ви можете завантажити архів тут: Squash the Creeps активи.

Once you've downloaded it, extract the .zip archive on your computer. Open the Godot Project Manager and click the Import button.

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

У спливаючому вікні імпорту введіть повний шлях до щойно створеного каталогу 3d_squash_the_creeps_starter/. Ви можете натиснути кнопку Огляд праворуч, щоб відкрити браузер файлів і перейти до файлу project.godot, який міститься в папці.

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

Натисніть кнопку Імпорт, щоб відкрити проєкт у редакторі.

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

Може з’явитися вікно з повідомленням про те, що проєкт було створено за допомогою старішої версії Godot. Натисніть OK, щоб конвертувати проєкт у вашу поточну версію 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-редакторі. Перший – натисканням кнопки Використовувати прив'язку (або натисканням клавіші Y). Другий – вибравши вузол, перетягнувши маркер на гізмо, а потім утримуючи Ctrl (Cmd на macOS), одночасно утримуючи вибраний вузол.

../../_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, доки земля не засвітиться.

У Інспекторі увімкніть Тінь, натиснувши прапорець.

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

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

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

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