Build games as easily as you play them — join the Phaser Beam waitlist for Early Access.
class Example extends Phaser.Scene { iter = 0; numbers = []; frame = 'veg01'; idx = 1; gravity = 0.5; blitter; preload () { this.load.setBaseURL('https://cdn.phaserfiles.com/v385'); this.load.image('bg', [ 'assets/textures/gold.png', 'assets/textures/gold-n.png' ]); this.load.atlas({ key: 'atlas', textureURL: 'assets/tests/fruit/veg2.png', normalMap: 'assets/tests/fruit/veg2-n.png', atlasURL: 'assets/tests/fruit/veg2.json' }); } create () { this.lights.enable(); this.lights.setAmbientColor(0x808080); this.add.sprite(400, 300, 'bg').setPipeline('Light2D').setAlpha(0.5); this.blitter = this.add.blitter(0, 0, 'atlas').setPipeline('Light2D'); for (let i = 0; i < 32; i++) { this.launch(); } const light = this.lights.addLight(400, 300, 400); this.input.on('pointermove', pointer => { light.x = pointer.x; light.y = pointer.y; }); } update () { if (this.input.activePointer.isDown) { for (let i = 0; i < 8; i++) { this.launch(); } } for (let index = 0, length = this.blitter.children.list.length; index < length; ++index) { const bob = this.blitter.children.list[index]; bob.data.vy += this.gravity; bob.y += bob.data.vy; bob.x += bob.data.vx; if (bob.x > 780) { bob.x = 780; bob.data.vx *= -bob.data.bounce; } else if (bob.x < 0) { bob.x = 0; bob.data.vx *= -bob.data.bounce; } if (bob.y > 568) { bob.y = 568; bob.data.vy *= -bob.data.bounce; } } } launch () { // Max of 1000 lit objects if (this.blitter.children.list.length >= 1000) { return; } this.idx++; if (this.idx === 38) { this.idx = 1; } if (this.idx < 10) { this.frame = `veg0${this.idx.toString()}`; } else { this.frame = `veg${this.idx.toString()}`; } const bob = this.blitter.create(0, 0, this.frame); bob.data.vx = Math.random() * 6; bob.data.vy = Math.random() * 2; bob.data.bounce = 1; } } const config = { type: Phaser.WEBGL, parent: 'phaser-example', width: 800, height: 600, scene: Example }; const game = new Phaser.Game(config);
class Example extends Phaser.Scene
{
iter = 0;
numbers = [];
frame = 'veg01';
idx = 1;
gravity = 0.5;
blitter;
preload ()
{
this.load.setBaseURL('https://cdn.phaserfiles.com/v385');
this.load.image('bg', [ 'assets/textures/gold.png', 'assets/textures/gold-n.png' ]);
this.load.atlas({
key: 'atlas',
textureURL: 'assets/tests/fruit/veg2.png',
normalMap: 'assets/tests/fruit/veg2-n.png',
atlasURL: 'assets/tests/fruit/veg2.json'
});
}
create ()
{
this.lights.enable();
this.lights.setAmbientColor(0x808080);
this.add.sprite(400, 300, 'bg').setPipeline('Light2D').setAlpha(0.5);
this.blitter = this.add.blitter(0, 0, 'atlas').setPipeline('Light2D');
for (let i = 0; i < 32; i++)
{
this.launch();
}
const light = this.lights.addLight(400, 300, 400);
this.input.on('pointermove', pointer =>
{
light.x = pointer.x;
light.y = pointer.y;
});
}
update ()
{
if (this.input.activePointer.isDown)
{
for (let i = 0; i < 8; i++)
{
this.launch();
}
}
for (let index = 0, length = this.blitter.children.list.length; index < length; ++index)
{
const bob = this.blitter.children.list[index];
bob.data.vy += this.gravity;
bob.y += bob.data.vy;
bob.x += bob.data.vx;
if (bob.x > 780)
{
bob.x = 780;
bob.data.vx *= -bob.data.bounce;
}
else if (bob.x < 0)
{
bob.x = 0;
bob.data.vx *= -bob.data.bounce;
}
if (bob.y > 568)
{
bob.y = 568;
bob.data.vy *= -bob.data.bounce;
}
}
}
launch ()
{
// Max of 1000 lit objects
if (this.blitter.children.list.length >= 1000)
{
return;
}
this.idx++;
if (this.idx === 38)
{
this.idx = 1;
}
if (this.idx < 10)
{
this.frame = `veg0${this.idx.toString()}`;
}
else
{
this.frame = `veg${this.idx.toString()}`;
}
const bob = this.blitter.create(0, 0, this.frame);
bob.data.vx = Math.random() * 6;
bob.data.vy = Math.random() * 2;
bob.data.bounce = 1;
}
}
const config = {
type: Phaser.WEBGL,
parent: 'phaser-example',
width: 800,
height: 600,
scene: Example
};
const game = new Phaser.Game(config);