mirror of
https://github.com/photonstorm/phaser
synced 2024-12-12 22:33:09 +00:00
184 lines
3.9 KiB
JavaScript
184 lines
3.9 KiB
JavaScript
|
|
var game = new Phaser.Game(800, 600, Phaser.CANVAS, 'phaser-example', { preload: preload, create: create, update: update, render: render });
|
|
|
|
function preload() {
|
|
|
|
game.load.spritesheet('gameboy', 'assets/sprites/gameboy_seize_color_40x60.png', 40, 60);
|
|
|
|
}
|
|
|
|
var sprite;
|
|
var sprite2;
|
|
var sprite3;
|
|
|
|
var bmd;
|
|
|
|
var b1;
|
|
var b2;
|
|
var b3;
|
|
|
|
var r;
|
|
|
|
function create() {
|
|
|
|
game.stage.backgroundColor = '#124184';
|
|
|
|
test1();
|
|
|
|
bmd = game.add.bitmapData(800, 600);
|
|
var bg = game.add.sprite(0, 0, bmd);
|
|
bg.body.moves = false;
|
|
|
|
bmd.clear();
|
|
bmd.context.lineWidth = 1;
|
|
|
|
}
|
|
|
|
function test1() {
|
|
|
|
sprite = game.add.sprite(500, 400, 'gameboy', 0);
|
|
// sprite = game.add.sprite(0, 0, 'gameboy', 0);
|
|
sprite.name = 'red';
|
|
// sprite.pivot.x = 20;
|
|
// sprite.pivot.y = 30;
|
|
// sprite.anchor.setTo(0.5, 0.5);
|
|
|
|
// sprite.body.polygon.translate(20, 20);
|
|
|
|
// sprite.body.polygon.rotate(game.math.degToRad(45));
|
|
// sprite.angle = 45;
|
|
|
|
// sprite.scale.setTo(2, 2);
|
|
// sprite.body.polygon.scale(2, 2);
|
|
|
|
sprite.body.bounce.x = 0.8;
|
|
|
|
sprite2 = game.add.sprite(0, 400, 'gameboy', 2);
|
|
sprite2.name = 'green';
|
|
// sprite2.body = null;
|
|
|
|
sprite3 = game.add.sprite(700, 400, 'gameboy', 3);
|
|
sprite3.name = 'yellow';
|
|
// sprite3.body = null;
|
|
|
|
// b1 = new SAT.Box(new SAT.Vector(sprite.x, sprite.y), sprite.width, sprite.height);
|
|
// b2 = new SAT.Box(new SAT.Vector(sprite2.x, sprite2.y), sprite2.width, sprite2.height);
|
|
// b3 = new SAT.Box(new SAT.Vector(sprite3.x, sprite3.y), sprite3.width, sprite3.height);
|
|
|
|
// r = new SAT.Response();
|
|
|
|
// console.log(b2);
|
|
|
|
game.input.onDown.add(launch1, this);
|
|
|
|
}
|
|
|
|
function launch1() {
|
|
|
|
|
|
// console.log(b1);
|
|
|
|
sprite.body.velocity.x = -100;
|
|
// sprite2.body.velocity.x = -225;
|
|
|
|
}
|
|
|
|
|
|
function update() {
|
|
|
|
// sprite.angle += 0.5;
|
|
// sprite.body.polygon.rotate(game.math.degToRad(0.5));
|
|
|
|
/*
|
|
b1.pos.x = sprite.x;
|
|
b1.pos.y = sprite.y;
|
|
|
|
b2.pos.x = sprite2.x;
|
|
b2.pos.y = sprite2.y;
|
|
|
|
b3.pos.x = sprite3.x;
|
|
b3.pos.y = sprite3.y;
|
|
|
|
r.clear();
|
|
|
|
if (SAT.testPolygonPolygon(b1.toPolygon(), b2.toPolygon(), r))
|
|
{
|
|
console.log(r, b1.pos, b2.pos);
|
|
|
|
// b1.pos.sub(r.overlapV);
|
|
// sprite.body.velocity.x *= -sprite.body.bounce.x;
|
|
|
|
sprite.body.velocity.x = 0;
|
|
|
|
sprite.x += Math.abs(r.overlapV.x) + 1;
|
|
console.log('sprite moved to', sprite.x);
|
|
// sprite.x = b1.pos.x;
|
|
// sprite.y = b1.pos.y;
|
|
|
|
}
|
|
*/
|
|
|
|
sprite.body.collide(sprite2.body);
|
|
|
|
bmd.clear();
|
|
|
|
if (sprite)
|
|
{
|
|
renderPolygon(sprite.body.polygon);
|
|
// bmd.fillStyle('rgba(255,0,0,0.8');
|
|
// bmd.fillRect(sprite.body.polygon.pos.x, sprite.body.polygon.pos.y, sprite.body.shape.w, sprite.body.shape.h);
|
|
}
|
|
|
|
if (sprite2)
|
|
{
|
|
renderPolygon(sprite2.body.polygon);
|
|
// bmd.fillStyle('rgba(0,255,0,0.8');
|
|
// bmd.fillRect(sprite2.body.polygon.pos.x, sprite2.body.polygon.pos.y, sprite2.body.shape.w, sprite2.body.shape.h);
|
|
}
|
|
|
|
if (sprite3)
|
|
{
|
|
renderPolygon(sprite3.body.polygon);
|
|
// bmd.fillStyle('rgba(0,0,255,0.8');
|
|
// bmd.fillRect(sprite3.body.polygon.pos.x, sprite3.body.polygon.pos.y, sprite3.body.shape.w, sprite3.body.shape.h);
|
|
}
|
|
|
|
}
|
|
|
|
function renderPolygon (polygon, color) {
|
|
|
|
// console.log(polygon);
|
|
// this.start(0, 0, color);
|
|
|
|
bmd.context.beginPath();
|
|
bmd.context.moveTo(polygon.pos.x + polygon.points[0].x, polygon.pos.y + polygon.points[0].y);
|
|
|
|
for (var i = 1; i < polygon.points.length; i++)
|
|
{
|
|
bmd.context.lineTo(polygon.pos.x + polygon.points[i].x, polygon.pos.y + polygon.points[i].y);
|
|
}
|
|
|
|
bmd.context.closePath();
|
|
bmd.context.strokeStyle = 'rgba(255, 255, 255, 1)';
|
|
// bmd.context.strokeStyle = color;
|
|
bmd.context.stroke();
|
|
|
|
}
|
|
|
|
|
|
function render() {
|
|
|
|
if (sprite)
|
|
{
|
|
// game.debug.renderBodyInfo(sprite, 16, 24);
|
|
game.debug.renderText(sprite.name + ' x: ' + sprite.x, 16, 500);
|
|
game.debug.renderText(sprite.name + ' world x: ' + sprite.world.x, 16, 520);
|
|
}
|
|
|
|
if (sprite2)
|
|
{
|
|
// game.debug.renderBodyInfo(sprite2, 16, 190);
|
|
game.debug.renderText(sprite2.name + ' x: ' + sprite2.x, 400, 500);
|
|
}
|
|
|
|
}
|