ParticleEmitter в Phaser представляет собой объект,
предназначенный для генерации частиц с различными свойствами, такими как
скорость, направление, масштаб, прозрачность и цвет. Частицы создаются
на основе ParticleManager, который управляет их рендерингом
и обновлением состояния. Эмиссия частиц позволяет создавать визуальные
эффекты вроде огня, дыма, искр, дождя и снега.
Для создания эмиттера используется следующий синтаксис:
const particles = this.add.particles('particleTexture');
const emitter = particles.createEmitter({
x: 400,
y: 300,
speed: { min: 100, max: 200 },
angle: { min: 0, max: 360 },
lifespan: 2000,
quantity: 5,
scale: { start: 1, end: 0 },
alpha: { start: 1, end: 0 },
blendMode: 'ADD'
});
Ключевые параметры:
x и y — координаты появления частиц.speed — скорость движения частиц, может быть числом или
объектом с диапазоном {min, max}.angle — направление движения в градусах, может
задаваться диапазоном.lifespan — время жизни частицы в миллисекундах.quantity — количество частиц, выпускаемых за один шаг
эмиссии.scale — масштаб частицы, может меняться во
времени.alpha — прозрачность, также может изменяться
динамически.blendMode — режим смешивания, например ADD
для светящихся эффектов.Эмиссия частиц поддерживает разнообразные эффекты благодаря изменяемым свойствам:
Скорость и направление Возможна генерация частиц
с фиксированной скоростью или с диапазоном значений. Комбинируя
speed и angle, создаются эффекты взрыва,
потока или водопада.
Жизненный цикл Свойство lifespan
определяет, как долго частица будет существовать. Можно задать диапазон,
чтобы эффект выглядел более естественно.
Масштаб и прозрачность Динамическая настройка
scale и alpha позволяет частицам постепенно
уменьшаться и исчезать, создавая плавные переходы.
Гравитация и ускорение Эмиссия поддерживает физические воздействия:
emitter.setGravityY(300);
emitter.setAccelerationX({ min: -50, max: 50 });
Частицы могут падать вниз, ускоряться в сторону или изменять траекторию в процессе движения.
Повтор и задержка Управление частотой выпуска частиц:
frequency — интервал между генерацией новых
частиц.delay — задержка перед запуском эмиттера.repeat — количество повторов цикла эмиссии.Эмиттер может использовать одну текстуру или анимацию:
const emitter = particles.createEmitter({
frame: ['spark1', 'spark2', 'spark3'],
speed: { min: 100, max: 300 },
lifespan: 1000
});
Использование нескольких кадров создает иллюзию анимированных частиц.
Для плавности анимации рекомендуется комбинировать с alpha
и scale.
Эмиссия может быть привязана к объектам:
emitter.startFollow(player, 0, 0);
player.Также возможна активация частиц по событиям:
player.on('jump', () => {
emitter.explode(10, player.x, player.y);
});
explode создает мгновенный выброс указанного
числа частиц.BlendMode определяет, как частицы накладываются друг на друга:
NORMAL — стандартное смешение.ADD — создаёт яркие, светящиеся эффекты.MULTIPLY — затемнение и усиление цветовых
комбинаций.Комбинируя прозрачность, масштаб и blendMode, можно создавать реалистичные огненные или дымовые эффекты.
Для оптимизации важно учитывать:
maxParticles).ParticleManager к нескольким эмиттерам для
уменьшения нагрузки на GPU.stop() вместо
мгновенного уничтожения, чтобы избежать резкого исчезновения
частиц.Взрыв с дымом и искрами
Магический след за персонажем
Дождь или снег
start() — запуск эмиссии.stop() — плавное прекращение генерации частиц.explode(quantity, x, y) — мгновенная генерация
частиц.pause() и resume() — временное
приостановление и продолжение эмиссии.Эти методы позволяют гибко интегрировать частицы в игровые события и анимации.
Наличие детальной настройки ParticleEmitter делает
Phaser мощным инструментом для создания динамичных и визуально
привлекательных эффектов. Использование всех перечисленных параметров в
комбинации позволяет моделировать сложные природные и фантастические
явления с минимальными затратами ресурсов.