这是来自相位器.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。