与 Phaser Arcade 物理引擎发生碰撞

Collision with Phaser Arcade physics engine

我正在尝试使用 Phaser Arcade Physics 制作一款游戏,您可以在其中控制精灵并尝试使用箭头键避开物体。但是,我在这些对象和精灵之间发生碰撞时遇到了问题。

我的代码: https://jsfiddle.net/o445dt44/

具体在JSFiddle的第69行,请大家看一下

//game.physics.arcade.collide(sprite, enemy, enemy2, enemy3);

这通常应该完成碰撞的工作,但事实并非如此。

非常感谢任何帮助。谢谢!

仅供参考,您的 JSFiddle 缺少对 Phaser 的外部引用。例如,您可以在 https://cdnjs.cloudflare.com/ajax/libs/phaser/2.6.2/phaser.min.js 中包含一个 CDN 版本。

其次,您实际上没有正确使用碰撞功能。根据 the documentation 实际上是 collide(object1, object2, collideCallback, processCallback, callbackContext).

我创建了 a forked version 可以正确设置碰撞。特别是进行了以下更改:

敌人需要设置在与sprite相同的水平。

var enemy;
var enemy2;
var enemy3;

接下来,在您的更新中,鉴于您的设置方式,您需要单独设置所有对象之间的碰撞:

game.physics.arcade.collide(sprite, enemy);
game.physics.arcade.collide(sprite, enemy2);
game.physics.arcade.collide(sprite, enemy3);
game.physics.arcade.collide(enemy, enemy2);
game.physics.arcade.collide(enemy, enemy3);
game.physics.arcade.collide(enemy2, enemy3);

另一种更好的方法是将你的敌人设置为一组,然后让你的精灵与该组发生碰撞。

official Sprite Vs Group example 涵盖了这一点。如果你想让敌人发生碰撞,你可以设置群体与自己发生碰撞。

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