miaoda-game-beam-phaser
v0.3.0
Published
Phaser Graphics beam renderer for miaoda-game-beam-core.
Readme
miaoda-game-beam-phaser
Use this Phaser 4 adapter to render and update miaoda-game-beam-core lasers with pooled Phaser Graphics objects. It handles Scene update/shutdown ownership, telegraph/fire/fade styling, and active-beam hit queries.
Install
pnpm add miaoda-game-beam-core miaoda-game-beam-phaser phaserCreate a Scene-owned layer
Register BeamPlugin as a Scene Plugin and create a layer for each independent visual group:
const layer = this.beams.create({
telegraphColor: 0xff5a5a,
fireColor: 0x78d2ff,
telegraphWidth: 3,
});
const beam = layer.spawn({
origin: bossPosition,
angleDeg: -60,
length: 900,
width: 40,
telegraph: 1,
fire: 2,
fade: 0.4,
});
beam.aim(bossPosition, currentAngle);
if (layer.beamsHitting(playerPosition, playerRadius).length) {
damagePlayer();
}Beam durations are in seconds. Scene update events are converted from Phaser milliseconds automatically. 0 degrees points along +X.
For a layer without automatic Scene updates, pass { autoUpdate: false } and call layer.update(deltaMs) from your own fixed-step or ordering code. update still expects milliseconds because it matches Phaser's Scene event.
Lifecycle and ownership
The plugin destroys its owned layers during Scene shutdown. A manually created new BeamLayer(scene, style) must be destroyed by your code. destroy() releases live and pooled Graphics and is terminal; later spawn() calls throw.
The adapter decides how a beam is drawn. Your game remains responsible for aiming, damage, invulnerability frames, and deciding whether the same target can be hit again on later updates. beamsHitting excludes telegraph and fade phases automatically.
