Клавиатура: addKey, createCursorKeys, isDown

Phaser предоставляет мощные инструменты для обработки ввода с клавиатуры, которые позволяют управлять объектами игры, реагировать на нажатия клавиш и создавать сложные схемы управления. Основные методы для работы с клавишами — это addKey, createCursorKeys и проверка состояния клавиш через isDown.


Метод addKey

Метод addKey используется для привязки отдельной клавиши к объекту Key, который можно отслеживать в игре.

this.keyW = this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.W);

Ключевые моменты использования:

  • Phaser.Input.Keyboard.KeyCodes содержит все стандартные клавиши, такие как A, S, D, W, стрелки и функциональные клавиши.
  • Метод возвращает объект Key, который можно использовать для проверки состояния клавиши через свойства isDown, isUp и justDown.
  • Поддерживается привязка нескольких клавиш к разным действиям для реализации комплексного управления.

Пример проверки нажатия клавиши:

if (this.keyW.isDown) {
    player.y -= player.speed;
}

isDown возвращает true, если клавиша нажата в текущем кадре. Для отслеживания только начала нажатия используется Phaser.Input.Keyboard.JustDown.


Метод createCursorKeys

createCursorKeys создаёт объект с четырьмя стандартными клавишами направления: вверх, вниз, влево, вправо.

this.cursors = this.input.keyboard.createCursorKeys();

Структура объекта cursors:

{
    up: Key,
    down: Key,
    left: Key,
    right: Key,
    space: Key,      // опционально
    shift: Key       // опционально
}

Пример использования:

if (this.cursors.left.isDown) {
    player.x -= player.speed;
} else if (this.cursors.right.isDown) {
    player.x += player.speed;
}

if (this.cursors.up.isDown) {
    player.y -= player.speed;
} else if (this.cursors.down.isDown) {
    player.y += player.speed;
}

Особенности:

  • Поддерживает проверку одновременного нажатия нескольких клавиш.
  • Удобно для реализации классического управления персонажем в 2D-играх.
  • Объект cursors можно расширять, добавляя дополнительные клавиши через addKey.

Проверка состояния клавиш: isDown, isUp, justDown, justUp

Каждая клавиша, созданная через addKey или createCursorKeys, предоставляет методы для проверки её состояния.

  • isDown — возвращает true, если клавиша нажата в текущий момент.
  • isUp — возвращает true, если клавиша не нажата.
  • justDown — возвращает true только в момент начала нажатия клавиши (подходит для одиночных действий, например, прыжок).
  • justUp — возвращает true в момент отпускания клавиши.

Пример использования justDown:

if (Phaser.Input.Keyboard.JustDown(this.keySpace)) {
    player.jump();
}

Такой подход предотвращает многократное срабатывание события в течение одного удержания клавиши.


Организация управления персонажем

Комбинация addKey и createCursorKeys позволяет гибко настраивать управление. Например, можно комбинировать стрелки для движения и отдельные клавиши для действий:

this.keySpace = this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.SPACE);

if (this.cursors.left.isDown) {
    player.moveLeft();
} else if (this.cursors.right.isDown) {
    player.moveRight();
}

if (Phaser.Input.Keyboard.JustDown(this.keySpace)) {
    player.attack();
}

Советы по использованию:

  • Для динамически меняющихся клавиш можно хранить их в массиве или объекте, чтобы легко перебирать.
  • addKey подходит для специфических действий, а createCursorKeys — для стандартного управления.
  • Проверку состояния клавиш лучше выполнять внутри метода update, чтобы обработка происходила каждый кадр.

Особенности и ограничения

  • Phaser автоматически управляет повторением событий клавиш. Чтобы отключить повторное срабатывание, можно использовать свойства Key.repeat и Key.duration.
  • Метод createCursorKeys не покрывает все возможные клавиши, поэтому для функциональных или пользовательских комбинаций обязательно использовать addKey.
  • Для мобильных платформ клавиатурный ввод нужно комбинировать с сенсорными событиями, так как физическая клавиатура может быть отсутствующей.

Резюме ключевых приёмов

  1. addKey — создаёт объект клавиши для кастомных действий.
  2. createCursorKeys — быстро создаёт стандартные стрелочные клавиши.
  3. isDown — проверка удержания клавиши.
  4. justDown — одноразовое срабатывание при начале нажатия.
  5. Комбинирование этих инструментов позволяет создавать гибкое управление персонажем и обрабатывать сложные схемы ввода в игре.