gpt4 book ai didi

javascript - 与 Phaser Arcade 物理引擎的碰撞

转载 作者:行者123 更新时间:2023-12-01 03:43:11 24 4
gpt4 key购买 nike

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

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

具体是在 JSFiddle 的第 69 行,我想让你看一下。

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

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

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

最佳答案

仅供引用,您的 JSFiddle 缺少对 Phaser 的外部引用。您可以将 CDN 版本添加到 https://cdnjs.cloudflare.com/ajax/libs/phaser/2.6.2/phaser.min.js ,例如。

其次,您实际上没有正确使用碰撞函数。每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);

另一种更好的方法是将你的敌人设置为一个群体,然后让你的 Sprite 与该群体发生碰撞。

有一个 official Sprite Vs Group example这涵盖了这一点。如果您希望敌人发生碰撞,您可以将组设置为与自身碰撞。

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

关于javascript - 与 Phaser Arcade 物理引擎的碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43737150/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com