JSFiddle - React, Tailwind, and code Playground
HTML
<script src="http://cdnjs.cloudflare.com/ajax/libs/phaser/2.0.6/phaser.min.js"></script>
JavaScript
var game = new Phaser.Game(600, 400, Phaser.CANVAS, 'phaser-example', { preload: preload, create: create, update: update, render: render });
function preload() {
game.load.image('tetrisblock1', '');
game.load.image('tetrisblock2', '');
game.load.image('tetrisblock3', '');
game.load.physics('physicsData', 'http://examples.phaser.io/assets/physics/sprites.json');
}
var tetris1;
var tetris2;
var tetris3;
var mouseBody;
var mouseConstraint;
function create() {
// Enable p2 physics
game.physics.startSystem(Phaser.Physics.P2JS);
game.physics.p2.gravity.y = 1000;
tetris1 = game.add.sprite(300, 100, 'tetrisblock1');
tetris2 = game.add.sprite(375, 200, 'tetrisblock2');
tetris3 = game.add.sprite(450, 300, 'tetrisblock3');
// Create collision group for the blocks
var blockCollisionGroup = game.physics.p2.createCollisionGroup();
// This part is vital if you want the objects with their own collision groups to still collide with the world bounds
// (which we do) - what this does is adjust the bounds to use its own collision group.
game.physics.p2.updateBoundsCollisionGroup();
// Enable the physics bodies on all the sprites
game.physics.p2.enable([ tetris1, tetris2, tetris3 ], true);
tetris1.body.clearShapes();
tetris1.body.loadPolygon('physicsData', 'tetrisblock1');
tetris1.body.setCollisionGroup(blockCollisionGroup);
tetris1.body.collides([blockCollisionGroup]);
tetris2.body.clearShapes();
tetris2.body.loadPolygon('physicsData', 'tetrisblock2');
tetris2.body.setCollisionGroup(blockCollisionGroup);
tetris2.body.collides([blockCollisionGroup]);
tetris3.body.clearShapes();
tetris3.body.loadPolygon('physicsData', 'tetrisblock3');
tetris3.body.setCollisionGroup(blockCollisionGroup);
tetris3.body.collides([blockCollisionGroup]);
// create physics body for mouse which we will use for dragging clicked bodies
mouseBody = new p2.Body();
game.physics.p2.world.addBody(mouseBody);
// attach pointer events
game.input.onDown.add(click,...