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.

Створення сцени гравця

Підготувавши параметри проекта ми можемо почати працювати над персонажем, керованим гравцем.

Перша сцена визначає об'єкт Player. Однією з переваг створення окремої сцени гравця є те, що ми можемо протестувати її окремо, ще до того, як створили інші частини гри.

Структура вузлів

Для початку нам потрібно вибрати кореневий вузол для об’єкта гравця. Як правило, кореневий вузол сцени повинен відображати бажану функціональність об'єкта - те, що об'єкт є. У верхньому лівому кутку на вкладці «Сцена» натисніть кнопку «Інший вузол» і додайте до сцени вузол Area2D.

Примітка

Godot also provides the CharacterBody2D node, specifically designed for 2D characters, which includes built-in support for some of the processes explained in this tutorial. In many real world projects, CharacterBody2D would be a better choice for players and enemies. However, this tutorial focuses on core concepts that apply to a wider range of nodes and use cases.

../../_images/add_node.webp

Коли ви додаєте вузол Area2D, Godot відображатиме такий піктограму попередження поруч із ним у дереві сцени:

../../_images/no_shape_warning.webp

Це попередження повідомляє нам, що для вузла Area2D потрібна форма для виявлення зіткнень або накладень. Ми можемо тимчасово ігнорувати попередження, оскільки спочатку налаштуємо візуальні ефекти гравця (за допомогою анімованого спрайту). Коли візуальні елементи будуть готові, ми додамо форму зіткнення як дочірній вузол. Це дозволить нам точно визначити розмір і положення форми на основі зовнішнього вигляду спрайту.

За допомогою Area2D ми можемо виявляти об'єкти, які перекривають або стикаються з гравцем. Змініть ім'я вузла на Player, двічі клацнувши по ньому. Тепер, коли ми встановили кореневий вузол сцени, ми можемо додавати додаткові вузли, щоб додати більше функціоналу.

Перш ніж додати будь-яких дочірніх елементів до вузла Програвач, ми хочемо переконатися, що ми випадково не перемістимо або не змінимо їх розмір, натиснувши на них. Виберіть вузол і натисніть значок праворуч від замка. Його спливаюча підказка говорить: «Групує вибраний вузол із його дочірніми елементами. Це призводить до вибору батьківського вузла, коли клацнути будь-який дочірній вузол у 2D- і 3D-перегляді»

../../_images/lock_children.webp

Збережіть сцену як player.tscn. Натисніть Сцена > Зберегти або натисніть Ctrl + S у Windows/Linux або Cmd + S у macOS.

Примітка

У цьому проєкті ми будемо дотримуватися правил іменування Godot.

  • GDScript: Класи (вузли) використовують PascalCase, змінні та функції використовують snake_case, а константи використовують ALL_CAPS (Дивіться Посібник зі стилю GDScript ).

  • C#: Класи, експортовані змінні та методи використовують PascalCase, приватні поля використовують _camelCase, локальні змінні та параметри використовують camelCase (Дивіться Настанови по стилю C# ). Будьте обережні, вводячи назви методів саме під час підключення сигналів.

Анімація спрайта

Клацніть вузол Програвач і додайте (Ctrl + A в Windows/Linux або Cmd + A в macOS) дочірній вузол AnimatedSprite2D. AnimatedSprite2D керуватиме зовнішнім виглядом і анімацією для нашого гравця. Зверніть увагу, що поруч із вузлом є попереджувальний символ. Для AnimatedSprite2D потрібен ресурс SpriteFrames, який є списком анімацій, які він може відображати. Переконайтеся, що вибрано AnimatedSprite2D, а потім знайдіть властивість Sprite Frames у розділі Animation в інспекторі та натисніть «[empty]» -> «New SpriteFrames»:

../../_images/new_spriteframes.webp

Клацніть SpriteFrames, який ви щойно створили, щоб відкрити панель «SpriteFrames»:

../../_images/spriteframes_panel.webp

Зліва знаходиться список анімацій. Клацніть стандартний і перейменуйте його на прогулянка. Потім натисніть кнопку Додати анімацію, щоб створити другу анімацію під назвою up.

Знайдіть зображення програвача в док-станції FileSystem - вони знаходяться в папці art, яку ви розпакували раніше. Перетягніть два зображення для кожної анімації в Кадри анімації на панелі для відповідної анімації:

  • playerGrey_walk1 і playerGrey_walk2 для анімації walk

  • playerGrey_up1 і playerGrey_up2 для анімації up

../../_images/spriteframes_panel2.webp

Зображення гравця трохи завеликі для вікна гри, тому нам потрібно їх зменшити. Клацніть на вузлі AnimatedSprite2D та встановіть властивість Scale на (0.5, 0.5). Ви можете знайти її в Інспекторі під заголовком Node2D.

../../_images/player_scale.webp

Нарешті створіть ще одного нащадка Player, додайте CollisionShape2D . Він визначатиме "коробку чутливості" гравця, або межі його зони зіткнення. Для цього персонажа найкраще підходить вузол CapsuleShape2D , тому поруч із пунктом "Shape" ("Форма") в Інспекторі натисніть "[порожній]" "->" Нова CapsuleShape2D ". Використовуючи дві ручки розмірів, змініть розмір форми, щоб покрити спрайт:

../../_images/player_coll_shape1.webp

Коли ви закінчите, ваша сцена Player повинна виглядати так:

../../_images/player_scene_nodes.webp

Щойно це буде зроблено, попередження на вузлі Area2D зникне, оскільки тепер йому призначено форму та він може взаємодіяти з іншими об’єктами.

Не забудьте зберегти сцену знову після цих змін.

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