我有一个背景和汽车精灵的游戏。
汽车现在从右向左行驶。我试图做到这一点,以便当玩家点击汽车时,汽车加速并继续加快速度。
到目前为止我的代码:
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;
我尝试了从速度到更改补间数据的不同方法,但它们都不起作用。计数器计数,但汽车像以前一样继续前进。 我做错了什么?
答案 0 :(得分:1)
好的,我明白了。
问题是移动物体的不同方法。它可以通过补间,通过自己移动对象或通过物理来完成。
但是你不能把它们混在一起!这导致了这个问题。所以在我的情况下,我现在用moveToXY移动精灵然后加速。像这样:
game.physics.arcade.moveToXY(policecar, 100, streetHeight);
然后单击时,侦听器函数会触发:
sprite.body.acceleration.x = -1000;
效果很好!