Phaser 精灵在静止时不会发生碰撞

Phaser sprites not colliding when standing still

我正在制作一个类似马里奥的简单平台游戏,我想在玩家角色跳到敌人头上时杀死敌人,并在玩家角色从侧面与敌人相撞时杀死玩家。

我在玩家精灵移动时设法做到了,但是,如果玩家静止不动,敌人就会穿过他而不会杀死他。

您可以在此处查看 GitHub 存储库中的所有代码:

https://github.com/failedCoder/failedCoder.github.io

您可以在这里试玩游戏(加载需要几秒钟):

https://failedcoder.github.io/

首先为玩家和敌人启用物理,设置速度,现在你可以选择如何左右移动敌人,我将举例说明如何将他们向左移动。所以,要记住的重要一点是:"Physics system only works if at least one body has velocity".

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

var enemy1 = enemies.create(230,490,'invader');
//enemy1.body.gravity.y = 300;  
enemy1.body.velocity.x = -100;  

 var enemy2 = enemies.create(430,490,'invader');
//enemy2.body.gravity.y = 300;
enemy2.body.velocity.x = -100;

在更新函数中添加此代码:

game.physics.arcade.collide(player, enemies, touchingEnemies);

然后创建一个函数 touchingEnemies:

function touchingEnemies(player, enemy)
{
    if (player.body.touching.right || player.body.touching.left)
    {
        // player is dead
        player.alpha = .5;
    }
    else if (player.body.touching.down)
    {
        // player is jumping on enemy, kill it
        enemy.alpha = .5;
    }
}