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

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

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

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

Для початку нам потрібно вибрати кореневої вузол [Root Node] для об'єкта player. У загальному випадку, кореневий вузол сцени повинен відображати бажану функціональність об'єкта - чим об'єкт є. Натисніть кнопку "Other Node" (Інший вузол) і додайте вузол Area2D в сцену.

../../_images/add_node.png

Godot виведе попереджувальний значок поруч із вузлом у дереві сцени. Ви можете проігнорувати його наразі. Ми розглянемо цей значок пізніше.

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

Перш ніж додати будь-яких нащадків до вузла Player, ми хочемо переконатися, що випадково їх не перемістимо, чи не змінимо розмір, натиснувши на них. Виберіть вузол і натисніть на значок праворуч від блокування; в підказці написано: "Гарантує, що нащадки об'єкта не можуть бути вибрані."

../../_images/lock_children.png

Збережіть сцену. Клацніть Сцена -> Зберегти, або натисніть Ctrl+S на Windows/Linux, або Cmd + S на macOS.

Примітка

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

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

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

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

Натисніть на вузол Player і додайте йому в нащадки вузол AnimatedSprite (Анімація спрайту). AnimatedSprite оброблятиме зовнішній вигляд і анімацію для нашого гравця. Зауважте, що поруч із вузлом є символ попередження. AnimatedSprite вимагає ресурсу SpriteFrames (кадри спрайту), який являє собою список кадрів, які він може відображати. Щоб створити його, знайдіть властивість Frames (Кадри) у Інспекторі та натисніть "[порожній]" -> "Нові SpriteFrames". Клацніть ще раз щоб відкрити панель "SpriteFrames" (Кадри спрайту):

../../_images/spriteframes_panel.png

Зліва знаходиться список анімацій. Натисніть на "default" і перейменуйте на "walk". Потім клацніть кнопку "Нова анімація" для створення другої анімації під ім'ям "up". Знайдіть зображення гравця на панелі "Файлова система" - вони знаходяться в папці art, яку ви розпакували раніше. Перетягніть два зображення для кожної анімації playerGrey_up[1/2] та playerGrey_walk[1/2] в сторону "Animation Frames" для кожної відповідно:

../../_images/spriteframes_panel2.png

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

../../_images/player_scale.png

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

../../_images/player_coll_shape.png

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

../../_images/player_scene_nodes.png

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

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