Build games as easily as you play them — join the Phaser Beam waitlist for Early Access.
class Example extends Phaser.Scene { constructor () { super(); } create () { const border = new Phaser.Geom.Polygon([ 0, 0, 800, 0, 800, 600, 0, 600, 0, 0 ]); const shape1 = new Phaser.Geom.Polygon([ 100, 150, 120, 50, 200, 80, 140, 210, 100, 150 ]); const shape2 = new Phaser.Geom.Polygon([ 100, 200, 120, 250, 60, 300, 100, 200 ]); const shape3 = new Phaser.Geom.Polygon([ 200, 260, 220, 150, 300, 200, 350, 320, 200, 260 ]); const shape4 = new Phaser.Geom.Polygon([ 340, 60, 360, 40, 370, 70, 340, 60 ]); const shape5 = new Phaser.Geom.Polygon([ 450, 190, 560, 170, 540, 270, 430, 290, 450, 190 ]); const shape6 = new Phaser.Geom.Polygon([ 400, 95, 580, 50, 480, 150, 400, 95 ]); const shape7 = new Phaser.Geom.Polygon([ 100, 150, 120, 50, 200, 80, 140, 210, 100, 150 ]); const shape8 = new Phaser.Geom.Polygon([ 100, 200, 120, 250, 60, 300, 100, 200 ]); const shape9 = new Phaser.Geom.Polygon([ 200, 260, 220, 150, 300, 200, 350, 320, 200, 260 ]); const shape10 = new Phaser.Geom.Polygon([ 340, 60, 360, 40, 370, 70, 340, 60 ]); const shape11 = new Phaser.Geom.Polygon([ 450, 190, 560, 170, 540, 270, 430, 290, 450, 190 ]); const shape12 = new Phaser.Geom.Polygon([ 400, 95, 580, 50, 480, 150, 400, 95 ]); Phaser.Geom.Polygon.Translate(shape2, 0, 150); Phaser.Geom.Polygon.Translate(shape5, 50, 0); Phaser.Geom.Polygon.Translate(shape7, 550, 200); Phaser.Geom.Polygon.Translate(shape8, 300, 200); Phaser.Geom.Polygon.Translate(shape9, 280, 170); Phaser.Geom.Polygon.Translate(shape10, 140, 480); Phaser.Geom.Polygon.Translate(shape11, -300, 270); Phaser.Geom.Polygon.Translate(shape12, 200, -30); const shapes = [ border, shape1, shape2, shape3, shape4, shape5, shape6, shape7, shape8, shape9, shape10, shape11, shape12 ]; const ray = new Phaser.Geom.Line(400, 300, 400, 300); const debug = this.add.graphics(); const draw = (pointer) => { const intersects = Phaser.Geom.Intersects.GetRaysFromPointToPolygon(pointer.worldX, pointer.worldY, shapes); debug.clear(); // Draw the intersections debug.lineStyle(1, 0xff0000); debug.fillStyle(0xff0000); intersects.forEach(line => { ray.setTo(pointer.worldX, pointer.worldY, line.x, line.y); debug.strokeLineShape(ray); debug.fillCircle(line.x, line.y, 4); }); // Draw all shapes debug.lineStyle(1, 0x00ff00); shapes.forEach(shape => { debug.strokePoints(shape.points); }); }; draw({ worldX: 450, worldY: 200 }); this.input.on('pointermove', pointer => draw(pointer)); } } const config = { type: Phaser.WEBGL, width: 800, height: 600, backgroundColor: '#2d2d2d', parent: 'phaser-example', scene: Example }; let game = new Phaser.Game(config);
class Example extends Phaser.Scene
{
constructor ()
{
super();
}
create ()
{
const border = new Phaser.Geom.Polygon([ 0, 0, 800, 0, 800, 600, 0, 600, 0, 0 ]);
const shape1 = new Phaser.Geom.Polygon([ 100, 150, 120, 50, 200, 80, 140, 210, 100, 150 ]);
const shape2 = new Phaser.Geom.Polygon([ 100, 200, 120, 250, 60, 300, 100, 200 ]);
const shape3 = new Phaser.Geom.Polygon([ 200, 260, 220, 150, 300, 200, 350, 320, 200, 260 ]);
const shape4 = new Phaser.Geom.Polygon([ 340, 60, 360, 40, 370, 70, 340, 60 ]);
const shape5 = new Phaser.Geom.Polygon([ 450, 190, 560, 170, 540, 270, 430, 290, 450, 190 ]);
const shape6 = new Phaser.Geom.Polygon([ 400, 95, 580, 50, 480, 150, 400, 95 ]);
const shape7 = new Phaser.Geom.Polygon([ 100, 150, 120, 50, 200, 80, 140, 210, 100, 150 ]);
const shape8 = new Phaser.Geom.Polygon([ 100, 200, 120, 250, 60, 300, 100, 200 ]);
const shape9 = new Phaser.Geom.Polygon([ 200, 260, 220, 150, 300, 200, 350, 320, 200, 260 ]);
const shape10 = new Phaser.Geom.Polygon([ 340, 60, 360, 40, 370, 70, 340, 60 ]);
const shape11 = new Phaser.Geom.Polygon([ 450, 190, 560, 170, 540, 270, 430, 290, 450, 190 ]);
const shape12 = new Phaser.Geom.Polygon([ 400, 95, 580, 50, 480, 150, 400, 95 ]);
Phaser.Geom.Polygon.Translate(shape2, 0, 150);
Phaser.Geom.Polygon.Translate(shape5, 50, 0);
Phaser.Geom.Polygon.Translate(shape7, 550, 200);
Phaser.Geom.Polygon.Translate(shape8, 300, 200);
Phaser.Geom.Polygon.Translate(shape9, 280, 170);
Phaser.Geom.Polygon.Translate(shape10, 140, 480);
Phaser.Geom.Polygon.Translate(shape11, -300, 270);
Phaser.Geom.Polygon.Translate(shape12, 200, -30);
const shapes = [ border, shape1, shape2, shape3, shape4, shape5, shape6, shape7, shape8, shape9, shape10, shape11, shape12 ];
const ray = new Phaser.Geom.Line(400, 300, 400, 300);
const debug = this.add.graphics();
const draw = (pointer) => {
const intersects = Phaser.Geom.Intersects.GetRaysFromPointToPolygon(pointer.worldX, pointer.worldY, shapes);
debug.clear();
// Draw the intersections
debug.lineStyle(1, 0xff0000);
debug.fillStyle(0xff0000);
intersects.forEach(line => {
ray.setTo(pointer.worldX, pointer.worldY, line.x, line.y);
debug.strokeLineShape(ray);
debug.fillCircle(line.x, line.y, 4);
});
// Draw all shapes
debug.lineStyle(1, 0x00ff00);
shapes.forEach(shape => {
debug.strokePoints(shape.points);
});
};
draw({ worldX: 450, worldY: 200 });
this.input.on('pointermove', pointer => draw(pointer));
}
}
const config = {
type: Phaser.WEBGL,
width: 800,
height: 600,
backgroundColor: '#2d2d2d',
parent: 'phaser-example',
scene: Example
};
let game = new Phaser.Game(config);