【问题标题】:How to remove colliding box2d bodies in AndEngine?如何在 AndEngine 中删除碰撞的 box2d 物体?
【发布时间】:2012-07-22 23:36:24
【问题描述】:

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

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

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

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

后来

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

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

【问题讨论】:

  • 如果我的回答对您有所帮助,请不要忘记接受我的回答并投票给我,我们将不胜感激。谢谢:)

标签: android box2d andengine


【解决方案1】:

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

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

Box2D Collision and Removal

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

谢谢:)

【讨论】:

  • 顺便说一句,我还有一个问题,你有使用 andengine 动态壁纸的经验吗?
  • 是的,我有一个经验。在 AndEngine 上工作,但我没有得到 exp。关于 livewallapper :)
  • 听着,您在教程中修改了 box2d 类。但是这里我有一个box2d扩展(库项目)而不是一个类,你能告诉我我应该在扩展中修改哪个类吗?
  • 当我将它作为 ant 运行时,它给了我一个 BUILD FAILED。不知道下一步该做什么。
【解决方案2】:

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

mPhysicsWorld.getPhysicsConnectorManager().findPhysicsConnectorByShape(pSprite);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多