2017-03-24 12 views
0

これはphaser.jsのゲームの簡単なテストケースです。ボールが条件のためにスクリーンの上に移動し、衝突し、跳ね返り、停止します。スプライトのy値と速度を設定して、さらに落ちなくします。フェイザーゲームフレームワーク - 条件付きでも2つの更新ループでSprite.yの値が変更されました

ただし、次の更新のループでは、にconsole.log 2.

に再びy値が増加し、カウントが増加 - ボールは、yが、その後、437442445である私は理解していない440の上に残って下降としてどのようにball.yが440を2回越えるかは、これが実行中のコード全体です。条件付きでバウンスを0に設定しても効果はありません。それはコンソールではありません。ブラウザのログは、カウント変数が条件文が2回入力されたことを報告するため、位相変更と同期していません。

var mainState = { 
    preload: function() { 
     game.load.image('ball', 'assets/ball.png'); 
    }, 
    create: function() { 
     game.physics.startSystem(Phaser.Physics.ARCADE); 
     game.world.enableBody = true; 
     ball = game.add.sprite(180, 440, 'ball'); 
     ball.body.bounce.setTo(1); 
     ball.body.allowGravity = false; 
     ball.body.collideWorldBounds = true; 
     game.physics.arcade.moveToXY(ball, 160,10,350); ballstop = false; 
     count = 0; 
    }, 
    update: function() { 
     console.log("ball.y " + ball.y); 
     if (ball.y > 440) { 
     ball.body.bounce.setTo(0); 
     ball.body.velocity.x = 0; 
     ball.body.velocity.y = 0; 
     ball.y = 440; 
     count = count + 1; 
     } 
    }, 
}; 
var game = new Phaser.Game(360, 640); 
game.state.add('main', mainState); 
game.state.start('main'); 
+0

ここではいくつかのランダムな推測問題 – paulito

+0

を見るためにクローム開発ツールでのコンソールで https://phaserballtest.netlify.com/ .Lookを実行している:ゲーム物理学はに同時に扱ったりmainState年代から切り離されています ' update() '?加速度値は '0'に設定する必要がありますか? –

答えて

0

お試しreseting the body

関連するブロックは次のようになります:

if (ball.y > 440) { 
    ball.body.bounce.setTo(0); 
    ball.body.reset(0, 0); 
    //ball.body.velocity.x = 0; 
    //ball.body.velocity.y = 0; 
    ball.y = 440; 
    count = count + 1; 
} 

は、私もこの変化にJSFiddleを保存しました。

関連する問題