Ускорить спрайт при нажатии на фазер

У меня есть игра с фоном и автомобильным спрайтом.

Теперь машина едет справа налево. Я пытаюсь сделать так, чтобы когда игрок нажимал на машину, машина ускорялась и продолжала двигаться намного быстрее.

Мой код до сих пор:

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; 

Я пробовал разные методы от скорости до изменения данных анимации, но ни один из них не работает. Счетчик считает, но машина продолжает двигаться как раньше. Что я делаю не так?


person Owl    schedule 04.05.2015    source источник


Ответы (1)


Ладно, я понял.

Проблема в разных способах перемещения объекта. Это можно сделать с помощью твина, путем перемещения самого объекта или с помощью физики.

Но нельзя их смешивать! Это вызывало проблему. Итак, в моем случае я теперь перемещаю спрайт с помощью moveToXY, а затем ускоряюсь. Как это:

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

Затем при нажатии функция прослушивателя запускает это:

sprite.body.acceleration.x = -1000;

Работает хорошо!

person Owl    schedule 06.05.2015