点击相位器加速精灵

时间:2015-05-04 10:35:27

标签: game-physics phaser-framework

我有一个背景和汽车精灵的游戏。

汽车现在从右向左行驶。我试图做到这一点,以便当玩家点击汽车时,汽车加速并继续加快速度。

到目前为止我的代码:

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; 

我尝试了从速度到更改补间数据的不同方法,但它们都不起作用。计数器计数,但汽车像以前一样继续前进。 我做错了什么?

1 个答案:

答案 0 :(得分:1)

好的,我明白了。

问题是移动物体的不同方法。它可以通过补间,通过自己移动对象或通过物理来完成。

但是你不能把它们混在一起!这导致了这个问题。所以在我的情况下,我现在用moveToXY移动精灵然后加速。像这样:

game.physics.arcade.moveToXY(policecar, 100, streetHeight);

然后单击时,侦听器函数会触发:

sprite.body.acceleration.x = -1000;

效果很好!