var config = { width: 800, height: 600, type: Phaser.AUTO, parent: 'phaser-example', scene: { create: create, update: update } }; var game = new Phaser.Game(config); var graphics; var point; var point2; var projectedPoint; var angle = 0; function create () { graphics = this.add.graphics({ lineStyle: { width: 2, color: 0x2266aa }, fillStyle: { color: 0xaa0000 } }); // ProjectUnit assumes normalized point // i.e. it has magnitude of 1 point = new Phaser.Geom.Point(1, 0); point2 = new Phaser.Geom.Point(250, 0); projectedPoint = Phaser.Geom.Point.ProjectUnit(point2, point); this.input.on('pointermove', function (pointer) { Phaser.Geom.Point.CopyFrom(pointer, point2); point2.x -= 400; point2.y -= 300; }); } function update () { graphics.clear(); angle += 0.005; // unit vector point.setTo(Math.cos(angle), Math.sin(angle)); // project a point on point2 on point Phaser.Geom.Point.ProjectUnit(point2, point, projectedPoint); // set magnitude to 250, because it's unit point, we can simply multiply point.x *= 250; point.y *= 250; // drawn from the center (as if center was 0/0) graphics.lineBetween(400, 300, 400 + point.x, 300 + point.y); // draw projecting point graphics.lineStyle(2, 0x00aa00); graphics.lineBetween(400, 300, 400 + point2.x, 300 + point2.y); //move relative to center projectedPoint.x += 400; projectedPoint.y += 300; graphics.fillPointShape(projectedPoint, 15); graphics.lineStyle(1, 0xaa0000); graphics.lineBetween(point2.x + 400, point2.y + 300, projectedPoint.x, projectedPoint.y); }
Scan to open on your mobile device
var config = { width: 800, height: 600, type: Phaser.AUTO, parent: 'phaser-example', scene: { create: create, update: update } }; var game = new Phaser.Game(config); var graphics; var point; var point2; var projectedPoint; var angle = 0; function create () { graphics = this.add.graphics({ lineStyle: { width: 2, color: 0x2266aa }, fillStyle: { color: 0xaa0000 } }); // ProjectUnit assumes normalized point // i.e. it has magnitude of 1 point = new Phaser.Geom.Point(1, 0); point2 = new Phaser.Geom.Point(250, 0); projectedPoint = Phaser.Geom.Point.ProjectUnit(point2, point); this.input.on('pointermove', function (pointer) { Phaser.Geom.Point.CopyFrom(pointer, point2); point2.x -= 400; point2.y -= 300; }); } function update () { graphics.clear(); angle += 0.005; // unit vector point.setTo(Math.cos(angle), Math.sin(angle)); // project a point on point2 on point Phaser.Geom.Point.ProjectUnit(point2, point, projectedPoint); // set magnitude to 250, because it's unit point, we can simply multiply point.x *= 250; point.y *= 250; // drawn from the center (as if center was 0/0) graphics.lineBetween(400, 300, 400 + point.x, 300 + point.y); // draw projecting point graphics.lineStyle(2, 0x00aa00); graphics.lineBetween(400, 300, 400 + point2.x, 300 + point2.y); //move relative to center projectedPoint.x += 400; projectedPoint.y += 300; graphics.fillPointShape(projectedPoint, 15); graphics.lineStyle(1, 0xaa0000); graphics.lineBetween(point2.x + 400, point2.y + 300, projectedPoint.x, projectedPoint.y); }