繁体   English   中英

与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版本。

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

我创建了一个分叉版本 ,可以正确设置碰撞。 特别是进行了以下更改:

敌人需要设置在与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);

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

有一个官方的Sprite Vs Group示例可以解决这个问题。 如果要让敌人碰撞,则可以将组设置为与自身碰撞。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM