mirror of
https://github.com/wassname/phaser.git
synced 2026-07-02 17:00:42 +08:00
f6113ac6c4
Group has new 'addToWorld' parameter, which fulfills the same function as the old useStage. Stage now extends PIXI.Stage rather than owns one.
138 lines
3.0 KiB
JavaScript
138 lines
3.0 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.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();
|
|
}
|
|
|