Phaser предоставляет мощный движок для создания 2D-игр на JavaScript, и одной из его сильных сторон является поддержка сторонних плагинов. Плагины позволяют расширять функциональность движка без изменения его исходного кода, добавляя новые системы, эффекты, управление анимацией, физикой или пользовательским интерфейсом.
1. Глобальные плагины (Global Plugins) Глобальные плагины подключаются один раз и доступны во всех сценах. Они полезны для создания сервисов, кэширования данных, управления звуком или статистикой игры.
Пример регистрации глобального плагина:
class MyGlobalPlugin extends Phaser.Plugins.BasePlugin {
constructor(pluginManager) {
super(pluginManager);
}
init() {
console.log('Глобальный плагин инициализирован');
}
customMethod() {
console.log('Метод плагина вызван');
}
}
const config = {
type: Phaser.AUTO,
width: 800,
height: 600,
scene: [MainScene],
plugins: {
global: [
{ key: 'MyGlobalPlugin', plugin: MyGlobalPlugin, start: true }
]
}
};
const game = new Phaser.Game(config);
После инициализации плагин доступен через
this.plugins.get('MyGlobalPlugin').
2. Плагины для сцены (Scene Plugins) Эти плагины подключаются к конкретной сцене и доступны только в ней. Они удобны для добавления кастомной логики или визуальных эффектов в отдельной сцене без влияния на остальные.
Пример подключения:
class MyScenePlugin extends Phaser.Plugins.ScenePlugin {
constructor(scene, pluginManager) {
super(scene, pluginManager);
}
spawnParticle(x, y) {
const particle = this.scene.add.circle(x, y, 5, 0xff0000);
this.scene.tweens.add({
targets: particle,
alpha: 0,
duration: 1000,
onComplete: () => particle.destroy()
});
}
}
class MainScene extends Phaser.Scene {
constructor() {
super({ key: 'MainScene' });
}
preload() {
}
create() {
this.plugins.installScenePlugin(
'MyScenePlugin', // ключ
MyScenePlugin, // класс плагина
'myPlugin', // как будет доступен в сцене
this
);
this.myPlugin.spawnParticle(400, 300);
}
}
Теперь в MainScene можно использовать
this.myPlugin для вызова методов плагина.
Большинство плагинов Phaser распространяются через NPM или CDN. Для установки через NPM используется команда:
npm install phaser-plugin-name
После установки подключение выполняется стандартным
import:
import MyExternalPlugin from 'phaser-plugin-name';
Для CDN можно подключить скрипт в HTML:
Подключённый плагин регистрируется аналогично встроенным, через
секцию plugins в конфигурации игры.
Многие сторонние плагины расширяют физику Phaser, добавляя новые типы коллизий, мягкие тела или эффекты частиц. При интеграции необходимо учитывать:
Пример использования стороннего плагина для частиц:
this.plugins.installScenePlugin(
'ParticleEffects',
ParticleEffectsPlugin,
'effects',
this
);
this.effects.createExplosion(400, 300, {
scale: 1.5,
duration: 1200
});
Плагины могут расширять функциональность существующих объектов
Phaser. Часто реализуются методы, добавляющие анимацию, физические
свойства или интерактивность. Важно использовать scene.add
и scene.physics для корректной интеграции, чтобы объекты
оставались совместимыми с движком.
Пример расширения спрайта плагином:
this.myPlugin.enhanceSprite(this.player, {
glow: true,
bounce: 0.8
});
Такой подход позволяет интегрировать внешние системы, сохраняя совместимость с существующими сценами и объектами Phaser.