Physics World events added.

Group has new 'addToWorld' parameter, which fulfills the same function as the old useStage.
Stage now extends PIXI.Stage rather than owns one.
This commit is contained in:
photonstorm
2014-02-12 19:45:09 +00:00
parent 424d1126bc
commit f6113ac6c4
10 changed files with 401 additions and 159 deletions
+137
View File
@@ -0,0 +1,137 @@
var game = new Phaser.Game(800, 600, Phaser.CANVAS, 'phaser-example', { preload: preload, create: create, update: update, render: render });
function preload() {
game.load.image('backdrop', 'assets/pics/remember-me.jpg');
game.load.image('box', 'assets/sprites/block.png');
}
var box;
var box2;
var cursors;
function p2px(v) {
return v *= -20;
}
function px2p(v) {
return v * -0.05;
}
function create() {
// game.world.setBounds(0, 0, 1920, 1200);
game.add.sprite(0, 0, 'backdrop');
game.physics.onBodyAdded.add(addedToWorld, this);
box = game.add.sprite(200, 200, 'box');
box.name = 'bob';
box.anchor.set(0.5);
box.physicsEnabled = true;
box2 = game.add.sprite(400, 200, 'box');
box2.name = 'ben';
box2.anchor.set(0.5); // if using physics you nearly always need to anchor from the center like this unless you don't need rotation
// box2.scale.set(2); // if you need to scale, do it BEFORE enabling physics. You can't do it at run-time.
box2.physicsEnabled = true;
box2.body.setZeroDamping();
box2.body.fixedRotation = true;
game.camera.follow(box2);
cursors = game.input.keyboard.createCursorKeys();
game.physics.defaultRestitution = 0.8;
}
function addedToWorld(body, world) {
console.log('Body added for', body);
}
function update() {
box2.body.setZeroVelocity();
if (cursors.left.isDown)
{
box2.body.moveLeft(400);
}
else if (cursors.right.isDown)
{
box2.body.moveRight(400);
}
if (cursors.up.isDown)
{
box2.body.moveUp(400);
}
else if (cursors.down.isDown)
{
box2.body.moveDown(400);
}
}
function render() {
game.debug.renderText('x: ' + box2.body.velocity.x, 32, 32);
game.debug.renderText('y: ' + box2.body.velocity.y, 32, 64);
// game.debug.renderText('x: ' + p2px(boxBody.position[0]), 32, 32);
// game.debug.renderText('y: ' + p2px(boxBody.position[1]), 32, 64);
// game.debug.renderText('r: ' + boxBody.angle, 32, 96);
// drawbox();
}
function drawbox() {
// var ctx = game.context;
/*
ctx.save();
ctx.translate(game.width/2, game.height/2); // Translate to the center
ctx.scale(50, -50); // Zoom in and flip y axis
ctx.lineWidth = 0.05;
ctx.strokeStyle = 'rgb(255,255,255)';
ctx.beginPath();
var x = boxBody.position[0],
y = boxBody.position[1];
ctx.save();
ctx.translate(x, y); // Translate to the center of the box
ctx.rotate(boxBody.angle); // Rotate to the box body frame
ctx.rect(-boxShape.width/2, -boxShape.height/2, boxShape.width, boxShape.height);
ctx.stroke();
ctx.closePath();
// ctx.restore();
*/
// ctx.save();
// ctx.translate(game.width/2, game.height/2); // Translate to the center
// ctx.scale(20, -20); // Zoom in and flip y axis
// ctx.lineWidth = 0.05;
// ctx.strokeStyle = 'rgb(255,255,255)';
// ctx.beginPath();
// var y = planeBody.position[1];
// ctx.rotate(0); // Rotate to the box body frame
// ctx.moveTo(-game.width, y);
// ctx.lineTo( game.width, y);
// ctx.stroke();
// ctx.closePath();
// ctx.restore();
}