我有一个有背景的游戏和一个汽车精灵。
汽车现在是从右向左行驶的。我正在努力做到当玩家点击赛车时,赛车加速,并继续它的速度。
到目前为止我的代码如下:
var game = new Phaser.Game(800, 500, Phaser.AUTO, '', { preload: preload, create: create, update: update });
var text;
var counter = 0;
function preload() {
game.load.image('background', 'images/backgrounds/bg_g1a.png');
game.load.image('car', 'images/items/car.png');
}
function create() {
// enable the Arcade Physics system
game.physics.startSystem(Phaser.Physics.ARCADE);
// Game background
game.add.sprite(0, 0, 'background');
//add car
var sprite = game.add.sprite(700, 300, 'car');
game.physics.arcade.enable(sprite);
// add movement from right to left
var demoTween = game.add.tween(sprite).to({x:-200,y:300},2000);
// start again when out of the game
demoTween.onComplete.add(function(){
sprite.x = 700; sprite.y = 300;
demoTween.start();
});
demoTween.start();
//enable input on car
sprite.inputEnabled = true;
//counter
text = game.add.text(250, 16, '', { fill: '#ffffff' });
//start listener function on input
sprite.events.onInputDown.add(listener, this);
}
function update() {
}
// car has been clicked
function listener (sprite) {
counter++;
text.text = "You clicked " + counter + " times!";
sprite.body.acceleration = -2000;
}
我已经尝试了最后一行:
sprite.body.acceleration = -2000;
我尝试过从速度到改变补间数据的不同方法,但都不起作用。计时器在计时,但车还是像以前一样移动。我做错了什么?
发布于 2015-05-06 06:57:09
好的,我知道了。
问题在于移动对象的不同方法。它可以通过补间,通过移动对象本身或通过物理来完成。
但是你不能把它们混在一起!这就是导致问题的原因。所以在我的例子中,我现在用moveToXY移动精灵,然后加速。如下所示:
game.physics.arcade.moveToXY(policecar, 100, streetHeight);
然后,当单击时,侦听器函数将触发以下命令:
sprite.body.acceleration.x = -1000;
效果很好!
https://stackoverflow.com/questions/30027980
复制