相位器游戏框架 - 尽管有条件,Sprite.y 值在 2 个更新循环中发生了变化



这是来自相位器.js游戏中的简单测试用例。球移动到屏幕顶部,碰撞,弹跳并停止,因为有条件,我设置了精灵的y值和速度,以阻止它进一步下降。

但是,在下一个更新循环中,y 值再次增加,计数增加到 2。

从控制台.log - 当球下降时,y 是 437,442,445,然后保持在 440。我不明白 ball.y 是如何两次超过 440 的,这是整个运行代码。在条件中将反弹设置为 0 不起作用。这不是控制台.log浏览器中的相位器更新不同步,因为计数变量报告条件输入两次。

    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');

尝试重置正文。

相关块如下所示:

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。

最新更新