class Example extends Phaser.Scene { normal; line; graphics; create () { this.graphics = this.add.graphics({ lineStyle: { width: 3, color: 0xaa00aa, alpha: 0.6 } }); this.line = new Phaser.Geom.Line(390, 300, 410, 300); // if we omit a parameter, new Point instance will be created and returned this.normal = Phaser.Geom.Line.GetNormal(this.line); } update () { if (this.line.y2 > -150) { this.graphics.strokeLineShape(this.line); // normal is a directly perpendicular vector to supplied line // this moves the second line point 15px away in perpendicular direction this.line.x2 += this.normal.x * 15; this.line.y2 += this.normal.y * 15; // we can also supply an instance of Point that will be modified Phaser.Geom.Line.GetNormal(this.line, this.normal); } } } const config = { width: 800, height: 600, type: Phaser.AUTO, parent: 'phaser-example', scene: Example }; const game = new Phaser.Game(config);
Scan to open on your mobile device
class Example extends Phaser.Scene { normal; line; graphics; create () { this.graphics = this.add.graphics({ lineStyle: { width: 3, color: 0xaa00aa, alpha: 0.6 } }); this.line = new Phaser.Geom.Line(390, 300, 410, 300); // if we omit a parameter, new Point instance will be created and returned this.normal = Phaser.Geom.Line.GetNormal(this.line); } update () { if (this.line.y2 > -150) { this.graphics.strokeLineShape(this.line); // normal is a directly perpendicular vector to supplied line // this moves the second line point 15px away in perpendicular direction this.line.x2 += this.normal.x * 15; this.line.y2 += this.normal.y * 15; // we can also supply an instance of Point that will be modified Phaser.Geom.Line.GetNormal(this.line, this.normal); } } } const config = { width: 800, height: 600, type: Phaser.AUTO, parent: 'phaser-example', scene: Example }; const game = new Phaser.Game(config);