Phaser精灵站立不动时不会碰撞

时间:2017-05-05 12:11:19

标签: collision-detection collision phaser-framework sprite-sheet

我正在制作一个简单的马里奥,就像平台游戏一样,当玩家角色跳到他们的头部时,我想要杀死敌人,并且当他与侧面的敌人发生碰撞时杀死玩家。

当玩家精灵正在移动时,我已设法做到这一点,但是,如果玩家站立不动,敌人只是通过他而不会杀死他。

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

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

你可以在这里试一下游戏(加载几秒钟):

https://failedcoder.github.io/

1 个答案:

答案 0 :(得分:1)

首先为玩家和敌人启用物理,设置速度,现在你可以选择如何向左和向左移动敌人,我将举例说明如何向左移动它们。所以,要记住的重要一点是:“物理系统只有在至少一个物体具有速度时才有效。”

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);

然后创建一个触摸敌人的功能:

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;
    }
}