Ceci est un cas de test simple d'un jeu dans phaser.js. La balle se déplace vers le haut de l'écran, entre en collision, rebondit et s'arrête à cause d'un conditionnel. J'ai défini la valeur et la vélocité du sprite pour l'empêcher de tomber plus loin.Phaser Game Framework - Valeur Sprite.y modifiée dans 2 boucles de mise à jour malgré conditionnel
Cependant, dans la prochaine boucle de mise à jour, la valeur y augmente à nouveau, et l'augmentation de comptage à 2.
De console.log - comme la balle descend y est 437442445, puis reste sur 440. Je ne comprends pas comment ball.y va au-delà de 440 deux fois, c'est tout le code courant. Le réglage du rebond à 0 au conditionnel n'a aucun effet. Ce n'est pas que console.log dans le navigateur n'est pas synchronisé avec la mise à jour de phaser, parce que la variable count signale que le conditionnel est entré deux fois.
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');
Voici fonctionner https://phaserballtest.netlify.com/ .Look à la console Outils Chrome Dev pour voir le problème – paulito
Juste quelques suppositions de hasard: Est-ce que la physique du jeu en même temps manipulé ou découplée de mainState de ' mettre à jour() '? Y a-t-il une valeur d'accélération qui doit être réglée sur «0»? –