phaser/examples/wip/misc/sat1.js

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);
}
}