Ввод
Клавиатура, указатель (мышь + касания) и геймпад — и то, как Phaser направляет события игровым объектам.
Phaser объединяет клавиатуру, указатель (мышь + касания) и геймпад за единым менеджером ввода, доступным как this.input.
Опрос против событий
Два допустимых стиля:
// Событийный стиль — реакция на один переход.
this.input.keyboard!.on('keydown-SPACE', () => this.jump());
// Стиль опроса — проверка состояния каждый кадр в update().
const cursors = this.input.keyboard!.createCursorKeys();
update() {
if (cursors.left.isDown) this.player.x -= 4;
}
Опрос подходит для непрерывных действий (движение); события подходят для дискретных действий (прыжок, выстрел, выбор в меню).
Указатель
this.input.on('pointerdown', (pointer) => {
const world = this.cameras.main.getWorldPoint(pointer.x, pointer.y);
this.spawnAt(world.x, world.y);
});
Указатель всегда сообщает экранные координаты. Используйте camera.getWorldPoint для преобразования.
Интерактивность отдельных объектов
Для семантики «кликнуть по этому спрайту» включите объект в обработку:
button.setInteractive({ useHandCursor: true });
button.on('pointerdown', () => this.scene.start('Game'));
Phaser проверяет границы объекта (по умолчанию прямоугольник; попиксельно, если запрошено) и генерирует события только тогда, когда указатель действительно пересекает их.
Геймпад
Поддержка геймпада по умолчанию выключена — включите её в конфигурации игры:
input: { gamepad: true }
Затем читайте this.input.gamepad!.pad1?.buttons[0].pressed и т. п. в update.