Build games as easily as you play them — join the Phaser Beam waitlist for Early Access.
/* global dat */ var config = { type: Phaser.AUTO, width: 800, height: 600, backgroundColor: 0x222222, parent: 'phaser-example', physics: { default: 'arcade', // https://photonstorm.github.io/phaser3-docs/Phaser.Types.Physics.Arcade.html#.ArcadeWorldConfig arcade: { // https://photonstorm.github.io/phaser3-docs/Phaser.Types.Physics.Arcade.html#.CheckCollisionObject checkCollision: { up: true, down: true, left: true, right: true }, debug: true, debugBodyColor: 0xff00ff, debugShowBody: true, debugShowStaticBody: true, debugShowVelocity: true, debugStaticBodyColor: 0x0000ff, debugVelocityColor: 0x00ff00, forceX: false, fps: 60, gravity: { x: 0, y: 0 }, height: 600, isPaused: false, maxEntries: 16, overlapBias: 4, tileBias: 16, timeScale: 1, useTree: true, width: 800, x: 0, y: 0 } }, scene: { preload: preload, create: create, update: update } }; var balls; var blocks; var graphics; new Phaser.Game(config); function preload () { this.load.setBaseURL('https://cdn.phaserfiles.com/v355'); this.load.image('ball', 'assets/sprites/yellow_ball.png'); this.load.image('block', 'assets/sprites/32x32.png'); } function create () { // this.physics.world.setBounds(50, 50, 700, 500); graphics = this.add.graphics(); blocks = this.physics.add.staticGroup({ key: 'block', frameQuantity: 20 }); Phaser.Actions.PlaceOnRectangle(blocks.getChildren(), new Phaser.Geom.Rectangle(100, 100, 600, 400)); blocks.refresh(); balls = this.physics.add.group({ key: 'ball', frameQuantity: 12, collideWorldBounds: true, bounceX: 1, bounceY: 1, velocityX: 200, velocityY: 200 }); Phaser.Actions.RandomRectangle(balls.getChildren(), this.physics.world.bounds); this.physics.add.collider(balls); this.physics.add.collider(balls, blocks); createWorldGui(this.physics.world); } function update () { this.physics.world.wrap(balls); graphics.clear().fillStyle(0).fillRectShape(this.physics.world.bounds); } function createWorldGui (world) { var gui = new dat.GUI({ width: 400 }); var bounds = gui.addFolder('bounds'); bounds.add(world.bounds, 'x', -400, 400, 10); bounds.add(world.bounds, 'y', -300, 300, 10); bounds.add(world.bounds, 'width', 0, 800, 10); bounds.add(world.bounds, 'height', 0, 600, 10); var check = gui.addFolder('checkCollision'); check.add(world.checkCollision, 'left'); check.add(world.checkCollision, 'up'); check.add(world.checkCollision, 'right'); check.add(world.checkCollision, 'down'); var defaults = gui.addFolder('defaults'); defaults.add(world.defaults, 'debugShowBody'); defaults.add(world.defaults, 'debugShowStaticBody'); defaults.add(world.defaults, 'debugShowVelocity'); defaults.addColor(world.defaults, 'bodyDebugColor'); defaults.addColor(world.defaults, 'staticBodyDebugColor'); defaults.addColor(world.defaults, 'velocityDebugColor'); var debug = gui.addFolder('debugGraphic'); debug.add(world.debugGraphic, 'visible'); debug.add(world.debugGraphic, 'clear'); gui.add(world, 'drawDebug'); gui.add(world, 'forceX'); var gravity = gui.addFolder('gravity'); gravity.add(world.gravity, 'x', -300, 300, 10); gravity.add(world.gravity, 'y', -300, 300, 10); // gui.add(world, 'isPaused'); gui.add(world, 'OVERLAP_BIAS', -8, 8, 1); gui.add(world, 'pause'); gui.add(world, 'resume'); return gui; }
/* global dat */
var config = {
type: Phaser.AUTO,
width: 800,
height: 600,
backgroundColor: 0x222222,
parent: 'phaser-example',
physics: {
default: 'arcade',
// https://photonstorm.github.io/phaser3-docs/Phaser.Types.Physics.Arcade.html#.ArcadeWorldConfig
arcade: {
// https://photonstorm.github.io/phaser3-docs/Phaser.Types.Physics.Arcade.html#.CheckCollisionObject
checkCollision: {
up: true,
down: true,
left: true,
right: true
},
debug: true,
debugBodyColor: 0xff00ff,
debugShowBody: true,
debugShowStaticBody: true,
debugShowVelocity: true,
debugStaticBodyColor: 0x0000ff,
debugVelocityColor: 0x00ff00,
forceX: false,
fps: 60,
gravity: {
x: 0,
y: 0
},
height: 600,
isPaused: false,
maxEntries: 16,
overlapBias: 4,
tileBias: 16,
timeScale: 1,
useTree: true,
width: 800,
x: 0,
y: 0
}
},
scene: {
preload: preload,
create: create,
update: update
}
};
var balls;
var blocks;
var graphics;
new Phaser.Game(config);
function preload ()
{
this.load.setBaseURL('https://cdn.phaserfiles.com/v355');
this.load.image('ball', 'assets/sprites/yellow_ball.png');
this.load.image('block', 'assets/sprites/32x32.png');
}
function create ()
{
// this.physics.world.setBounds(50, 50, 700, 500);
graphics = this.add.graphics();
blocks = this.physics.add.staticGroup({
key: 'block',
frameQuantity: 20
});
Phaser.Actions.PlaceOnRectangle(blocks.getChildren(), new Phaser.Geom.Rectangle(100, 100, 600, 400));
blocks.refresh();
balls = this.physics.add.group({
key: 'ball',
frameQuantity: 12,
collideWorldBounds: true,
bounceX: 1,
bounceY: 1,
velocityX: 200,
velocityY: 200
});
Phaser.Actions.RandomRectangle(balls.getChildren(), this.physics.world.bounds);
this.physics.add.collider(balls);
this.physics.add.collider(balls, blocks);
createWorldGui(this.physics.world);
}
function update ()
{
this.physics.world.wrap(balls);
graphics.clear().fillStyle(0).fillRectShape(this.physics.world.bounds);
}
function createWorldGui (world)
{
var gui = new dat.GUI({ width: 400 });
var bounds = gui.addFolder('bounds');
bounds.add(world.bounds, 'x', -400, 400, 10);
bounds.add(world.bounds, 'y', -300, 300, 10);
bounds.add(world.bounds, 'width', 0, 800, 10);
bounds.add(world.bounds, 'height', 0, 600, 10);
var check = gui.addFolder('checkCollision');
check.add(world.checkCollision, 'left');
check.add(world.checkCollision, 'up');
check.add(world.checkCollision, 'right');
check.add(world.checkCollision, 'down');
var defaults = gui.addFolder('defaults');
defaults.add(world.defaults, 'debugShowBody');
defaults.add(world.defaults, 'debugShowStaticBody');
defaults.add(world.defaults, 'debugShowVelocity');
defaults.addColor(world.defaults, 'bodyDebugColor');
defaults.addColor(world.defaults, 'staticBodyDebugColor');
defaults.addColor(world.defaults, 'velocityDebugColor');
var debug = gui.addFolder('debugGraphic');
debug.add(world.debugGraphic, 'visible');
debug.add(world.debugGraphic, 'clear');
gui.add(world, 'drawDebug');
gui.add(world, 'forceX');
var gravity = gui.addFolder('gravity');
gravity.add(world.gravity, 'x', -300, 300, 10);
gravity.add(world.gravity, 'y', -300, 300, 10);
// gui.add(world, 'isPaused');
gui.add(world, 'OVERLAP_BIAS', -8, 8, 1);
gui.add(world, 'pause');
gui.add(world, 'resume');
return gui;
}