3

我正在使用 AndEngine 创建一个带有 box2d 扩展名的游戏。我想实现一个条件,即当两个物体发生碰撞时,它们应该被移除或重生。最初我尝试使用

if(sprite1.collidesWith(sprite2))
// remove the sprites

但这似乎无济于事,因为精灵附着在它们各自的身体上。我还尝试使用contactListener,如下所示:

bodyA=getFixtureA().getBody();
bodyB=getFixtureB().getBody();

然后稍后

if(bodyA!=null && bodyB!=null)
// remove the bodies

但这使游戏崩溃。有人知道更好的方法吗?

4

2 回答 2

4

所以有一些关于碰撞的东西,但我花了很长时间才弄清楚如何根据碰撞移除对象。所以决定做一个快速教程来尝试帮助其他人。关键是在 Box2D 中,您不能在碰撞处理程序中删除主体,需要做一些事情来标记它以便在下次更新时处理删除。(可能是更好的方法,但这有效并完成了工作)

这是一个非常好的教程的链接。

Box2D 碰撞和移除

这肯定会帮助您完成工作。

谢谢 :)

于 2012-07-22T23:43:30.193 回答
2

如果确实发生了 Sprite 碰撞,您也可以同时移除身体:

mPhysicsWorld.getPhysicsConnectorManager().findPhysicsConnectorByShape(pSprite);
于 2012-07-23T09:48:32.027 回答