开发者问题收集

Phaser 无法检测碰撞

2017-08-10
132

我正在用 phaser.js 编写一个游戏,游戏中玩家必须避开移动的宇宙飞船。鼠标被替换为 UFO。我需要帮助来弄清楚为什么 phaser 无法检测到 UFO 和宇宙飞船组之间的碰撞。请原谅这种混乱,因为我尝试了很多可能的解决方案。 代码:

var spaceShip;
var score = 0;
var text;
var gameOver = false;
var veggies;
var cursor;
var gameplayState = {
    create: function () {
        game.add.sprite(0,0,'Stars');
        veggies = game.add.group();
        veggies.enableBody = true;
        veggies.physicsBodyType = Phaser.Physics.ARCADE;
        function doSpaceship() {
            
            if (ships == true){
                if (ships == false){
                    kill();
                }
            if (Math.random() > 0.5){
                spaceShip = veggies.create(0, 300, 'Ship');
                spaceShip.angle = 90;
                game.physics.arcade.collide(veggies, cursor, collisionHandler);
                spaceShip.body.velocity.x=1000;
                fx.play();
                var times = game.time.events.add(Phaser.Timer.SECOND * Math.random() * 3, doSpaceship, this);
                var timess = game.time.events.add(Phaser.Timer.SECOND * 1, kill, this);
            } else {
                spaceShip = veggies.create(Math.random() * 640, 480, 'Ship');
                game.physics.arcade.collide(veggies, cursor, collisionHandler);

                spaceShip.body.velocity.y=-1000;
                gx.play();
                var times = game.time.events.add(Phaser.Timer.SECOND * Math.random() * 3, doSpaceship, this);
                var timess = game.time.events.add(Phaser.Timer.SECOND * 1, kill, this);
            }
            }
            function kill(){
                if(gameOver == false){
                    score++;
                }
                spaceShip.destroy();
            }
        }
        cursor = game.add.sprite(0,0,'Ufo');
        var ships = true;
        text = game.add.text(0,0,"Score: " + score);
        text.font = 'Saira Extra Condensed';
        doSpaceship();
        function collisionHandler(){
            gameOver = true;
        }
    },
    update: function(){
        cursor.x = game.input.mousePointer.x;

        cursor.y = game.input.mousePointer.y;
        text.setText("Score: " + score);
    }
};
1个回答

您应该将行

game.physics.arcade.collide(veggies, cursor, collisionHandler);

移至更新函数。

fresh mouse
2017-08-10