Сцена игрока и входные действия¶
В двух следующих уроках мы будем создавать сцену игрока, оформлять пользовательские действия и кодировать движения игрока. К концу у Вас будет персонаж, за которого можно играть и который будет двигаться в восьми направлениях.
Создайте новую сцену, зайдя в Меню сцены в верхнем левом углу и нажав Новая Сцена. Создайте узел KinematicBody, и назовите его Игрок.
Кинематические тела являются вспомогательными для области и для негнущихся тел, которые используются в руководствах по 2D-играм. Как и негнущиеся тела, они могут двигаться и сталкиваться с окружением, но вместо того, чтобы их контролировал физический движок, Вы определяете их движения. Вы увидите, как мы используем уникальные свойства узла при кодировании прыжков и механике сжимания.
См.также
Этот документ предполагает, что вы знакомы с различными физическими телами Godot. В противном случае сначала прочитайте Введение в физику.
Для начала мы собираемся создать базовый каркас для 3D-модели нашего персонажа. Позже это позволит нам вращать модель через код, пока он проигрывает анимацию.
Добавьте узел Spatial, как дочерний узла Player, и назовите его Pivot. Затем на панели Файловой системы расширьте папку art/
, нажав на неё два раза, перетащив и бросив ``player.glb``на узел Pivot.
Это должно инстанцировать модель, как дочернюю от Pivot. Вы можете переименовать её в Character.
Примечание
Файлы .glb
содержат данные 3D-сцены, основанные на открытой спецификации GLTF 2.0. Они являются современными и мощными альтернативами такому формату, как FBX, который Godot также поддерживает. Чтобы представить эти файлы, мы спроектировали модель в Blender 3D и экспортировали её в GLTF.
Как и в случае со всеми видами физических узлов нам необходима фигура столкновения для нашего персонажа, чтобы столкнуться с окружением. Снова выберите узел Player и добавьте CollisionShape. В Inspector присвойте SphereShape параметрам Shape. Каркас сферы появится ниже персонажа.
Это будет форма, которую использует физический движок, чтобы столкнуться с окружением, поэтому мы хотим, чтобы она лучше походила именно для 3D-модели. Уменьшите её, перетащив оранжевую кнопку в окне просмотра. Моя сфера имеет радиус около ``0.8``метра.
После этого передвиньте фигуру вверх так, чтобы её низ приблизительно совпадал с плоскостью сетки.
Вы можете переключить прозрачность модели, нажав на иконку глаза рядом с узлами Character или Pivot.
Сохраните сцены как Player.tscn
.
С готовыми узлами мы почти можем перейти к кодированию. Но для начала нам необходимо определить некоторые действия ввода.
Разработка действий ввода¶
Чтобы персонаж начал двигаться, мы обратим внимание на пользовательский ввод, например, на нажатие стрелок на клавиатуре. В Godot, пока мы можем писать все привязки к клавишам в коде, существует мощная система, которая позволяет Вам маркировать набор клавиш и кнопок. Это облегчает наши скрипты и делает их более читаемыми.
Эта система ― Input Map. Чтобы получить доступ к редактору, откройте меню Проект и выберите Настройки Проекта….
Вверху располагается множество вкладок. Нажмите на Input Map. Это окно позволяет добавить новые действия вверху; они являются названиями. Снизу вы можете привязать клавиши к этим действиям.
Проекты Godot оснащены предопределенными действиями, созданными для дизайна пользовательского интерфейса, которым мы можем здесь пользоваться. Но мы определяем наши собственные действия для поддержки геймпадов.
Мы назовем наши действия move_left
, move_right
, move_forward
, move_back
, и jump
.
Чтобы добавить действие, напишите его название в шкалу сверху и нажмите Enter.
Создайте пять действий. Снизу в Вашем окне должны быть перечислены все действия.
Чтобы привязать клавишу или кнопку к действию, нажмите справа на кнопку "+". Сделайте это для move_left
и нажмите Клавиша в выпадающем меню.
Эта опция позволяет Вам добавить ввод с клавиатуры. Появляется всплывающее окно и ожидает, когда Вы нажмете на клавишу. Нажмите на левую стрелку на клавиатуре и щелкните на OK.
Сделайте то же самое для клавиши A.
Давайте добавим опцию для левого джойстика на геймпаде. Снова нажмите кнопку "+", но в этот раз выберите Joy Axis.
Всплывающее окно предоставляет Вам два раскрывающихся меню. Слева Вы можете выбрать геймпад с помощью указателя. Device 0 отвечает за геймпад, подключенный первым, Device 1 отвечает за геймпад, подключенный вторым, и так далее. Вы можете выбрать джойстик и направление, которое вы хотите привязать к действию ввода справа. Оставьте настройки по умолчанию и нажмите кнопку Add.
Сделайте то же самое и для других действий ввода. К примеру, привяжите правую стрелку, D, и правую ось левого джойстика к move_right
. После того, как вы привяжите все клавиши, Ваш интерфейс должен выглядеть следующим образом.
Нам осталось настроить действие jump
. Привяжите клавишу Space к кнопке A на геймпаде. Чтобы привязать кнопку геймпада, выберите в меню опцию Joy Button.
Оставьте настройки по умолчанию и нажмите кнопку Add.
Действие ввода прыжка должно выглядеть следующим образом.
Это все действия, которые необходимы нам для данной игры. Вы можете использовать меню, чтобы маркировать любые группы клавиш или кнопок в Ваших проектах.
В следующей части мы будем кодировать и тестировать движения персонажа.