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.
createCursorKeyscreateCursorKeys создаёт объект с четырьмя стандартными
клавишами направления: вверх, вниз, влево, вправо.
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;
}
Особенности:
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, чтобы обработка происходила каждый кадр.Key.repeat и Key.duration.createCursorKeys не покрывает все возможные
клавиши, поэтому для функциональных или пользовательских комбинаций
обязательно использовать addKey.addKey — создаёт объект клавиши для кастомных
действий.createCursorKeys — быстро создаёт стандартные
стрелочные клавиши.isDown — проверка удержания клавиши.justDown — одноразовое срабатывание при начале
нажатия.