Сцена игрока и входные действия

В двух следующих уроках мы будем создавать сцену игрока, оформлять пользовательские действия и кодировать движения игрока. К концу у Вас будет персонаж, за которого можно играть и который будет двигаться в восьми направлениях.

Создайте новую сцену, зайдя в Меню сцены в верхнем левом углу и нажав Новая Сцена. Создайте узел KinematicBody, и назовите его Игрок.

image0

Кинематические тела являются вспомогательными для области и для негнущихся тел, которые используются в руководствах по 2D-играм. Как и негнущиеся тела, они могут двигаться и сталкиваться с окружением, но вместо того, чтобы их контролировал физический движок, Вы определяете их движения. Вы увидите, как мы используем уникальные свойства узла при кодировании прыжков и механике сжимания.

См.также

Этот документ предполагает, что вы знакомы с различными физическими телами Godot. В противном случае сначала прочитайте Введение в физику.

Для начала мы собираемся создать базовый каркас для 3D-модели нашего персонажа. Позже это позволит нам вращать модель через код, пока он проигрывает анимацию.

Добавьте узел Spatial, как дочерний узла Player, и назовите его Pivot. Затем на панели Файловой системы расширьте папку art/, нажав на неё два раза, перетащив и бросив ``player.glb``на узел Pivot.

image1

Это должно инстанцировать модель, как дочернюю от Pivot. Вы можете переименовать её в Character.

image2

Примечание

Файлы .glb содержат данные 3D-сцены, основанные на открытой спецификации GLTF 2.0. Они являются современными и мощными альтернативами такому формату, как FBX, который Godot также поддерживает. Чтобы представить эти файлы, мы спроектировали модель в Blender 3D и экспортировали её в GLTF.

Как и в случае со всеми видами физических узлов нам необходима фигура столкновения для нашего персонажа, чтобы столкнуться с окружением. Снова выберите узел Player и добавьте CollisionShape. В Inspector присвойте SphereShape параметрам Shape. Каркас сферы появится ниже персонажа.

image3

Это будет форма, которую использует физический движок, чтобы столкнуться с окружением, поэтому мы хотим, чтобы она лучше походила именно для 3D-модели. Уменьшите её, перетащив оранжевую кнопку в окне просмотра. Моя сфера имеет радиус около ``0.8``метра.

После этого передвиньте фигуру вверх так, чтобы её низ приблизительно совпадал с плоскостью сетки.

image4

Вы можете переключить прозрачность модели, нажав на иконку глаза рядом с узлами Character или Pivot.

image5

Сохраните сцены как Player.tscn.

С готовыми узлами мы почти можем перейти к кодированию. Но для начала нам необходимо определить некоторые действия ввода.

Разработка действий ввода

Чтобы персонаж начал двигаться, мы обратим внимание на пользовательский ввод, например, на нажатие стрелок на клавиатуре. В Godot, пока мы можем писать все привязки к клавишам в коде, существует мощная система, которая позволяет Вам маркировать набор клавиш и кнопок. Это облегчает наши скрипты и делает их более читаемыми.

Эта система ― Input Map. Чтобы получить доступ к редактору, откройте меню Проект и выберите Настройки Проекта….

image6

Вверху располагается множество вкладок. Нажмите на Input Map. Это окно позволяет добавить новые действия вверху; они являются названиями. Снизу вы можете привязать клавиши к этим действиям.

image7

Проекты Godot оснащены предопределенными действиями, созданными для дизайна пользовательского интерфейса, которым мы можем здесь пользоваться. Но мы определяем наши собственные действия для поддержки геймпадов.

Мы назовем наши действия move_left, move_right, move_forward, move_back, и jump.

Чтобы добавить действие, напишите его название в шкалу сверху и нажмите Enter.

image8

Создайте пять действий. Снизу в Вашем окне должны быть перечислены все действия.

image9

Чтобы привязать клавишу или кнопку к действию, нажмите справа на кнопку "+". Сделайте это для move_left и нажмите Клавиша в выпадающем меню.

image10

Эта опция позволяет Вам добавить ввод с клавиатуры. Появляется всплывающее окно и ожидает, когда Вы нажмете на клавишу. Нажмите на левую стрелку на клавиатуре и щелкните на OK.

image11

Сделайте то же самое для клавиши A.

image12

Давайте добавим опцию для левого джойстика на геймпаде. Снова нажмите кнопку "+", но в этот раз выберите Joy Axis.

image13

Всплывающее окно предоставляет Вам два раскрывающихся меню. Слева Вы можете выбрать геймпад с помощью указателя. Device 0 отвечает за геймпад, подключенный первым, Device 1 отвечает за геймпад, подключенный вторым, и так далее. Вы можете выбрать джойстик и направление, которое вы хотите привязать к действию ввода справа. Оставьте настройки по умолчанию и нажмите кнопку Add.

image14

Сделайте то же самое и для других действий ввода. К примеру, привяжите правую стрелку, D, и правую ось левого джойстика к move_right. После того, как вы привяжите все клавиши, Ваш интерфейс должен выглядеть следующим образом.

image15

Нам осталось настроить действие jump. Привяжите клавишу Space к кнопке A на геймпаде. Чтобы привязать кнопку геймпада, выберите в меню опцию Joy Button.

image16

Оставьте настройки по умолчанию и нажмите кнопку Add.

image17

Действие ввода прыжка должно выглядеть следующим образом.

image18

Это все действия, которые необходимы нам для данной игры. Вы можете использовать меню, чтобы маркировать любые группы клавиш или кнопок в Ваших проектах.

В следующей части мы будем кодировать и тестировать движения персонажа.