2017-01-12 7 views
0

Ich habe ein paar Sprites, die horizontal angeordnet sind. Die verwendete Physik-Engine ist P2. In Update Loop I Setup Geschwindigkeit für jeden Sprit:Phaser bewegliche Sprites

sprite.body.velocity.x = 150; 

Dann habe ich klare Formen für jeden Sprit und laden meine benutzerdefinierte Polygon:

sprite.body.clearShapes(); 
sprite.body.loadPolygon('physicsData', 'sprite1'); 

Nachdem ich Polygone zu laden, startet Sprites mit unterschiedlicher Geschwindigkeit zu bewegen (verschiedene Bilder). Warum ist das passiert? Wenn ich Polygone nicht lade - alles funktioniert gut, bewegen sich Sprites mit der gleichen Geschwindigkeit.

Antwort

0

Ich nehme an, es hat mit Polygonen zu tun, das heißt, wenn Sie sie erstellen. Aber ich verstehe nichts, du sagst, dass sie sich beide mit unterschiedlichen Geschwindigkeiten bewegen? Sind sie in Kontakt oder nicht? Weil ich einen einfachen Code aus den Phaser-Beispielen implementiert habe und beide Polygone sich mit der gleichen Geschwindigkeit bewegen, ohne logisch in Kontakt zu sein.

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