Создание сцены игрока
С установленными настройками проекта, мы можем начать работу над игроком.
Первая сцена будет определять объект Player. Одним из преимуществ создания отдельной сцены Player является то, что мы можем протестировать ее отдельно, даже до того, как создадим другие части игры.
Структура узла
Для начала нам нужно выбрать корневой узел для объекта игрока. Как правило, корневой узел сцены должен отражать желаемую функциональность объекта — то, чем является объект. В верхнем левом углу на вкладке "Сцена" нажмите кнопку "Другой узел" и добавьте узел Area2D в сцену.
При добавлении узла Area2D Godot отобразит следующий предупреждающий значок рядом с ним в дереве сцены:
Это предупреждение говорит нам, что узлу Area2D требуется форма для обнаружения столкновений или наложений. Мы можем временно игнорировать это предупреждение, поскольку сначала мы настроим визуальные эффекты игрока (используя анимированный спрайт). Как только визуальные эффекты будут готовы, мы добавим форму столкновения в качестве дочернего узла. Это позволит нам точно определить размер и положение формы на основе внешнего вида спрайта.
С помощью Area2D мы можем обнаруживать объекты, которые перекрывают или сталкиваются с игроком. Измените имя узла на Player, дважды щёлкнув по нему. Теперь, когда мы установили корневой узел сцены, мы можем добавлять дочерние узлы, чтобы придать ему больше функциональности.
Прежде чем мы добавим дочерних узлов на узел Player, мы хотим убедиться, что нажав на них, мы случайно не переместим их и не изменим их размер. Выберите узел и нажмите на значок справа от блокировки; его всплывающая подсказка гласит: "Группирует выбранный узел с его дочерними узлами. В этом случае, при клике на любой дочерний узел во вкладке 2D и 3D будет выбран родитель."
Сохраните сцену как player.tscn. Нажмите Scene > Save или нажмите Ctrl + S в Windows/Linux или Cmd + S в macOS.
Примечание
Для этого проекта мы будем следовать правилам именования Godot.
GDScript: Классы (узлы) используют PascalCase, переменные и функции - snake_case, константы - ALL_CAPS (см. Руководство по стилю GDScript).
C#: Классы, экспортные переменные и методы используют PascalCase, приватные поля используют _camelCase, локальные переменные и параметры используют camelCase (См. Руководство по стилю C#). Будьте внимательны, чтобы точно набирать имена методов при подключении сигналов.
Анимация спрайтов
Щелкните узел Player и добавьте (Ctrl + A в Windows/Linux или Cmd + A в macOS) дочерний узел AnimatedSprite2D. AnimatedSprite2D будет управлять внешним видом и анимацией нашего проигрывателя. Обратите внимание, что рядом с узлом есть предупреждающий символ. AnimatedSprite2D требует ресурс SpriteFrames, который представляет собой список анимаций, которые он может отображать. Убедитесь, что выбран AnimatedSprite2D, а затем найдите свойство Sprite Frames в разделе Animation в инспекторе и щелкните "[empty]" -> "New SpriteFrames":
Нажмите на SpriteFrames, который вы только что создали, чтобы открыть панель «SpriteFrames»:
Слева находится список анимаций. Щелкните по default и переименуйте его в walk. Затем щелкните кнопку Add Animation, чтобы создать вторую анимацию с именем up.
Найдите изображения проигрывателя в доке FileSystem - они находятся в папке art, которую вы распаковали ранее. Перетащите два изображения для каждой анимации в сторону Animation Frames панели для соответствующей анимации:
playerGrey_walk1иplayerGrey_walk2для анимацииwalkplayerGrey_up1иplayerGrey_up2для анимацииup
Изображения игрока слишком большие, поэтому нам надо их слегка уменьшить. Нажмите на узел AnimatedSprite2D и установите параметр Scale в (0.5, 0.5). Вы можете найти его в Инспекторе под названием Node2D.
Наконец, добавьте CollisionShape2D в качестве дочернего узла Player. Это определит "хитбокс" игрока, или границы его области столкновения. Для нашего персонажа лучше всего подходит узел CapsuleShape2D, поэтому рядом с "Shape" в Инспекторе нажмите "[пусто]" -> "Создать CapsuleShape2D". Используя две стрелки размера, измените размер фигуры так, чтобы она покрывала спрайт:
Когда вы закончите, сцена Player будет выглядеть вот так:
После этого предупреждение на узле Area2D исчезнет, поскольку теперь ему назначена форма и он может взаимодействовать с другими объектами.
После этих изменений обязательно сохраните сцену еще раз.
В следующей части мы добавим скрипт к узлу игрока, чтобы перемещать и анимировать его. Позже, мы настроим обнаружение столкновений, чтобы знать, в какой момент игрок столкнулся с чем-то.