ポリゴンとは関係なく、ポリゴンを作成する必要があると思います。しかし、私は何かを理解していない、あなたは彼らが両方別の速度で移動すると言う?彼らは接触しているかどうか?私はPhaserの例から単純なコードを実装しており、両方のポリゴンは論理的に接触することなく同じ速度で移動するからです。
var game = new Phaser.Game(800, 600, Phaser.CANVAS, 'phaser-example', { preload: preload, create: create, update: update, render: render });
function preload() {
game.load.image('contra2', 'contra2.png');
game.load.image('bunny', 'bunny.png');
// Load our physics data exported from PhysicsEditor
game.load.physics('physicsData', 'sprites.json');
}
var contra, bunny;
function create() {
// Enable p2 physics
game.physics.startSystem(Phaser.Physics.P2JS);
contra = game.add.sprite(400, 300, 'contra2');
bunny = game.add.sprite(100, 300, 'bunny');
// Enable the physics body on this sprite and turn on the visual debugger
game.physics.p2.enable(contra, true);
game.physics.p2.enable(bunny, true);
// Clear the shapes and load the 'contra2' polygon from the physicsData JSON file in the cache
contra.body.clearShapes();
contra.body.loadPolygon('physicsData', 'contra2');
bunny.body.clearShapes();
bunny.body.loadPolygon('physicsData', 'bunny');
// Just starts it rotating
game.input.onDown.add(function() { start = true; }, this);
cursors = game.input.keyboard.createCursorKeys();
}
function update() {
contra.body.setZeroVelocity();
bunny.body.setZeroVelocity();
if (cursors.left.isDown)
{
contra.body.moveLeft(200);
bunny.body.moveLeft(200);
}
else if (cursors.right.isDown)
{
contra.body.moveRight(200);
bunny.body.moveRight(200);
}
if (cursors.up.isDown)
{
contra.body.moveUp(200);
bunny.body.moveUp(200);
}
else if (cursors.down.isDown)
{
contra.body.moveDown(200);
bunny.body.moveDown(200);
}
}
Examples of P2 Polygons
Examples of P2 Movements