Сцена игрока и входные действия¶
В двух следующих уроках мы будем создавать сцену игрока, оформлять пользовательские действия и кодировать движения игрока. К концу у Вас будет персонаж, за которого можно играть и который будет двигаться в восьми направлениях.
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.
Кинематические тела являются вспомогательными для области и для негнущихся тел, которые используются в руководствах по 2D-играм. Как и негнущиеся тела, они могут двигаться и сталкиваться с окружением, но вместо того, чтобы их контролировал физический движок, Вы определяете их движения. Вы увидите, как мы используем уникальные свойства узла при кодировании прыжков и механике сжимания.
См.также
To learn more about the different physics node types, see the Введение в физику.
Для начала мы собираемся создать базовый каркас для 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, пока мы можем писать все привязки к клавишам в коде, существует мощная система, которая позволяет Вам маркировать набор клавиш и кнопок. Это облегчает наши скрипты и делает их более читаемыми.
This system is the Input Map. To access its editor, head to the Project menu and select Project Settings….
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.
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.
Создайте пять действий. Снизу в Вашем окне должны быть перечислены все действия.
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.
Эта опция позволяет Вам добавить ввод с клавиатуры. Появляется всплывающее окно и ожидает, когда Вы нажмете на клавишу. Нажмите на левую стрелку на клавиатуре и щелкните на OK.
Do the same for the A key.
Давайте добавим опцию для левого джойстика на геймпаде. Снова нажмите кнопку "+", но в этот раз выберите Joy Axis.
Всплывающее окно предоставляет Вам два раскрывающихся меню. Слева Вы можете выбрать геймпад с помощью указателя. Device 0 отвечает за геймпад, подключенный первым, Device 1 отвечает за геймпад, подключенный вторым, и так далее. Вы можете выбрать джойстик и направление, которое вы хотите привязать к действию ввода справа. Оставьте настройки по умолчанию и нажмите кнопку Add.
Сделайте то же самое и для других действий ввода. К примеру, привяжите правую стрелку, D, и правую ось левого джойстика к move_right
. После того, как вы привяжите все клавиши, Ваш интерфейс должен выглядеть следующим образом.
Нам осталось настроить действие jump
. Привяжите клавишу Space к кнопке A на геймпаде. Чтобы привязать кнопку геймпада, выберите в меню опцию Joy Button.
Оставьте настройки по умолчанию и нажмите кнопку Add.
Действие ввода прыжка должно выглядеть следующим образом.
Это все действия, которые необходимы нам для данной игры. Вы можете использовать меню, чтобы маркировать любые группы клавиш или кнопок в Ваших проектах.
В следующей части мы будем кодировать и тестировать движения персонажа.