无法检测与Phaser.IO的冲突

时间:2016-12-07 16:33:22

标签: collision-detection game-physics phaser-framework

我正在与Phaser.io建立一个简单的无限赛跑游戏。 enter image description here 我有一个骑手,骑手对象一直向右移动。 其中有几个障碍。我想检测发生碰撞的时间。但我似乎无法发现任何碰撞或重叠。请帮忙!

我的一些代码段在下面 -

function create () {
    //obstacles initialization

    obstacles = game.add.group();
    obstacles.enableBody = true;

    //player initialization

    player = game.add.sprite(10, 250, 'tuktuk'); game.physics.arcade.enable(player);
    player.body.bounce.y = 0.2;
    player.body.gravity.y = 800;
    player.body.bounce.x = 0.2;
    player.body.collideWorldBounds = true;
    player.animations.add('right', [0,1,2], 20, true);
    create_random_obstacle();
    game.physics.arcade.enable(obstacles);
    game.world.bringToTop(player);
    game.physics.arcade.overlap(obstacles, player, after_collision, null, null);    
}

3 个答案:

答案 0 :(得分:2)

您需要首先启用物理,然后才能检查精灵之间的任何碰撞。你可以通过

来做到这一点

game.physics.startSystem(Phaser.Physics.ARCADE);

你还应该为玩家精灵启用物理

game.physics.arcade.enable(player);

答案 1 :(得分:1)

我认为你还需要在玩家精灵上启用物理。

game.physics.arcade.enable(player);

另外,在我的游戏中,我将overlap的第一个参数设置为精灵,第二个参数是组。虽然根据Phaser docs这不重要,但你可以试着确定一下。

答案 2 :(得分:1)

与B. Naeem的回答一起:

game.physics.arcade.overlap(obstacles, player, after_collision, null, null);    

应该在update()中,因为它必须检查每一帧的重叠。