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

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

Create a new scene by going to the Scene menu in the top-left and clicking New Scene. Create a KinematicBody node as the root and name it Player.

image0

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

См.также

To learn more about the different physics node types, see the Введение в физику.

Для начала мы собираемся создать базовый каркас для 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, пока мы можем писать все привязки к клавишам в коде, существует мощная система, которая позволяет Вам маркировать набор клавиш и кнопок. Это облегчает наши скрипты и делает их более читаемыми.

This system is the Input Map. To access its editor, head to the Project menu and select Project Settings….

image6

At the top, there are multiple tabs. Click on Input Map. This window allows you to add new actions at the top; they are your labels. In the bottom part, you can bind keys to these actions.

image7

Godot projects come with some predefined actions designed for user interface design, which we could use here. But we're defining our own to support gamepads.

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

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

image8

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

image9

To bind a key or button to an action, click the "+" button to its right. Do this for move_left and in the drop-down menu, click Key.

image10

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

image11

Do the same for the A key.

image12

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

image13

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

image14

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

image15

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

image16

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

image17

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

image18

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

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