О чем этот пример
Секретные коды, такие как знаменитый Konami Code, — это классический способ добавить в игру пасхалки, читы или специальные возможности. В Phaser есть встроенная и удобная система для отслеживания сложных последовательностей нажатий клавиш. В этой статье мы разберем, как создать и обработать такую комбинацию на практическом примере, что позволит вам легко внедрить этот функционал в свои проекты.
Версия Phaser: код и демо в этой статье рассчитаны на Phaser 3.90.0.
Живой запуск
Ниже встроен рабочий билд примера. Оригинальный источник: GitHub.
Исходный код
class Example extends Phaser.Scene
{
create ()
{
// 37 = LEFT
// 38 = UP
// 39 = RIGHT
// 40 = DOWN
const combo = this.input.keyboard.createCombo([ 38, 38, 38, 40, 40, 40, 37, 37, 37, 39, 39, 39 ], { resetOnMatch: true });
this.input.keyboard.on('keycombomatch', event =>
{
console.log('Konami Code entered!');
});
}
}
const config = {
type: Phaser.CANVAS,
parent: 'phaser-example',
scene: Example
};
const game = new Phaser.Game(config);
Создание комбинации клавиш
Вся магия начинается с метода createCombo объекта клавиатуры (this.input.keyboard). Этот метод принимает массив с кодами клавиш и, опционально, объект настроек.
В нашем примере создается комбинация для Konami Code (Вверх, Вверх, Вверх, Вниз, Вниз, Вниз, Влево, Влево, Влево, Вправо, Вправо, Вправо). Коды клавиш — это числовые значения. Опция resetOnMatch: true автоматически сбрасывает отслеживание комбинации после успешного ввода, позволяя игроку ввести код снова.
const combo = this.input.keyboard.createCombo([ 38, 38, 38, 40, 40, 40, 37, 37, 37, 39, 39, 39 ], { resetOnMatch: true });
Обработка успешного ввода
Phaser сам отслеживает нажатия игрока и сравнивает их с зарегистрированными комбинациями. Когда пользователь точно и последовательно введет все клавиши, система клавиатуры сгенерирует событие 'keycombomatch'.
Чтобы отреагировать на это событие, мы используем метод on. В функцию-обработчик передается объект события, который содержит полезную информацию, например, ссылку на саму комбинацию (event). В данном примере мы просто выводим сообщение в консоль.
this.input.keyboard.on('keycombomatch', event => {
console.log('Konami Code entered!');
});
Конфигурация и запуск сцены
Этот код должен выполняться в контексте сцены Phaser. В методе create мы инициализируем нашу логику с комбинацией клавиш. Стандартная конфигурация игры (config) указывает на использование этой сцены (Example).
const config = {
type: Phaser.CANVAS,
parent: 'phaser-example',
scene: Example
};
const game = new Phaser.Game(config);
Практические советы и расширение функционала
Метод createCombo обладает гибкостью. Вот несколько идей для использования:
* **Сброс при ошибке:** Используйте опцию maxKeyDelay (максимальная задержка между нажатиями), чтобы комбинация сбрасывалась, если игрок печатает слишком медленно.
* **Учет клавиш-модификаторов:** В массив комбинации можно включать коды клавиш Shift, Ctrl или Alt.
* **Разные действия для разных кодов:** Подписавшись на одно событие 'keycombomatch', вы можете внутри обработчика проверять свойство event.keyCombo (это объект комбинации) и выполнять разные действия в зависимости от того, какая именно комбинация была введена.
// Пример: Создание комбинации, которая требует быстрого ввода
const quickCombo = this.input.keyboard.createCombo([ 65, 66, 67 ], { maxKeyDelay: 500 });
Что попробовать дальше
Система комбинаций клавиш в Phaser — это мощный и простой инструмент для добавления в игру слоя скрытых взаимодействий. Попробуйте реализовать разные коды: для включения режима бога, вызова специального персонажа или мгновенного перехода на скрытый уровень. Экспериментируйте с настройками resetOnMatch и maxKeyDelay, чтобы создать комбинации, которые идеально подходят под темп и стиль вашей игры.
