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.
Checking the stable version of the documentation...
Сцена игрока и действия ввода
В двух следующих уроках мы будем создавать сцену игрока, оформлять пользовательские действия ввода и программировать движения игрока. К концу у вас будет персонаж, за которого можно будет играть и двигаться в восьми направлениях.
Создайте новую сцену, перейдя в меню Scene в левом верхнем углу и нажав New Scene.
Нажмите кнопку Other Node и выберите тип узла CharacterBody3D для создания CharacterBody3D как корневого узла.
Переименуйте CharacterBody3D в Player. Тела персонажей дополняют тела области и твёрдые тела, используемые в руководстве по 2D-игре. Как и твёрдые тела, они могут двигаться и сталкиваться с окружающей средой, но вместо того, чтобы управляться физическим движком, вы управляете их движением. Вы увидите, как мы используем уникальные возможности узла, когда будем кодировать механику прыжка и сжатия.
См. также
Этот документ предполагает, что вы знакомы с различными физическими телами Godot. В противном случае сначала прочитайте Введение в физику.
Для начала мы собираемся создать базовый каркас для 3D-модели нашего персонажа. Позже это позволит нам вращать модель через код, пока он проигрывает анимацию.
Добавьте узел Node3D в качестве дочернего узла для Player. Выберите узел Player в дереве Scene и нажмите кнопку «+», чтобы добавить дочерний узел. Переименуйте его в Pivot.
Затем в панели Файловая система разверните папку art/, дважды щелкнув по ней, и перетащите player.glb на Pivot.
Это должно инстанцировать модель в качестве дочерней модели Pivot. Вам нужно переименовать его в Character.
Примечание
Файлы .glb содержат данные 3D-сцены на основе открытой спецификации glTF 2.0. Они являются современной и мощной альтернативой проприетарному формату, как FBX, который Godot также поддерживает. Для создания этих файлов спроектируйте модель в Blender 3D и экспортируйте ее в glTF.
Как и для всех физических узлов, нам нужна форма столкновения, чтобы наш персонаж сталкивался с окружающей средой. Снова выберите узел Player и добавьте дочерний узел CollisionShape3D. В Inspector, в свойстве Shape, добавьте новый узел SphereShape3D.
Каркас сферы отображается под персонажем.
Это будет форма, которую использует физический движок, для расчета столкновений с окружением, поэтому мы хотим, чтобы она лучше походила именно для 3D-модели. Увеличьте её, перетащив оранжевую кнопку в окне просмотра. Моя сфера имеет радиус около 0.8 метра.
После этого передвиньте форму столкновений вверх так, чтобы её низ приблизительно совпадал с плоскостью сетки.
Чтобы упростить перемещение фигуры, можно включить или отключить видимость модели, нажав на значок глаза рядом с узлами Character или Pivot.
Сохраните сцену как player.tscn.
С готовыми узлами мы почти можем перейти к программированию. Но для начала нам необходимо определить некоторые действия ввода.
Создание действий ввода
Чтобы персонаж начал двигаться, мы обратим внимание на пользовательский ввод, например, на нажатие стрелок на клавиатуре. В Godot, хоть мы и можем писать все привязки к клавишам в коде, но зачем если существует мощная система, которая позволяет вам маркировать набор клавиш и кнопок. Это облегчает наши скрипты и делает их более читаемыми.
Эта система называется Input Map (Карта входных данных). Чтобы открыть её редактор, перейдите в меню Project и выберите Project Settings....
В верхней части есть несколько вкладок. Нажмите Input Map. Это окно позволяет добавлять новые действия вверху — ваши метки. В нижней части можно привязать клавиши к этим действиям.
Проекты Godot содержат несколько предустановленных действий, разработанных для дизайна пользовательского интерфейса (см. скриншот выше). Они станут видимыми, если включить переключатель Show Built-in Actions. Мы могли бы использовать их здесь, но вместо этого определяем свои собственные для поддержки геймпадов. Оставьте Show Built-in Actions отключенным.
Мы назовем наши действия move_left, move_right, move_forward, move_back, и jump.
Чтобы добавить действие, напишите его название в строке вверху и нажмите Enter или кнопку Add.
Создайте следующие 5 действий:
Чтобы назначить клавишу или кнопку действию, нажмите кнопку "+" справа от неё. Сделайте то же самое для move_left. Нажмите клавишу со стрелкой влево и нажмите OK.
Привяжите также клавишу A , на действие move_left.
Теперь добавим поддержку левого джойстика геймпада. Нажмите кнопку "+" ещё раз, но на этот раз выберите вход самостоятельно в дереве входов. Выберите отрицательную ось X левого джойстика в разделе Joypad Axes.
Остальные значения оставьте как есть и нажмите OK.
Примечание
Если вы хотите, чтобы контроллеры имели разные действия ввода, вам следует использовать параметр Устройства в разделе Дополнительные параметры. Устройство 0 соответствует первому подключенному геймпаду, Устройство 1 соответствует второму подключенному геймпаду и так далее.
Сделайте то же самое и для других действий ввода. К примеру, привяжите клавишу вправо, D, и правую ось левого джойстика к move_right. После того как вы привяжите все клавиши, ваш интерфейс должен выглядеть следующим образом.
Последнее действие, которое нужно настроить — jump. Назначьте клавишу «Пробел» и кнопку A геймпада, расположенную в разделе Joypad Buttons.
Действие ввода прыжка должно выглядеть следующим образом.
Это все действия, которые необходимы нам для данной игры. Вы можете использовать меню, чтобы маркировать любые группы клавиш или кнопок в ваших проектах.
В следующей части мы будем программировать и тестировать движения персонажа.