检测Box2d和libgdx(android)中两个物体之间的碰撞

Jig*_*dya 3 android box2d libgdx

我是libgdx和Box2d引擎的新手,我正在开发一个使用它的游戏.我想检测两个物体之间的碰撞以执行某些功能.但是我不知道这样做的最佳方法,也希望得到点使用code.Kindly提供一些建议.我已经实现了ContactListener,但无济于事.

我正在使用代码作为参考.

谢谢

flo*_*hge 6

您已经以正确的方式创建并设置了ContactListener ...(对于一般设置,libgdx wiki很棒:https://github.com/libgdx/libgdx/wiki/box2d#contact-listeners)

如果您现在想要处理特定的联系人,那么您需要在beginContact();侦听器的方法中添加一些实现.该beginContact();方法包含一个Contact 实例,它可以满足您的所有需求:

  • FixtureA - 联系人的第一个夹具
  • FixtureB - FixtureA碰撞的夹具
  • WorldManifold - 保存碰撞点等的对象

通过灯具,您可以访问您正在绘制的实体和演员.可以通过该body.setUserData(actor);方法完成与Actor的连接.

现在您需要决定如何找出正确的碰撞.您可以使用传感器,这些传感器只是作为传感器的box2d灯具.这意味着当一个物体与一个传感器发生碰撞时,它不会反弹,而是会反过来掉落.但是,您可以在侦听器中检测到此联系人.

此外,向您的actor添加某种GameObjectType可能是个好主意.想象一下,你创造了一个跳跃游戏,玩家从平台跳到平台,下面有水.然后你会用PLAYER,WATER,PLATFORM等类型创建你的演员......通过box2d体的getUserData()方法你现在可以访问Actors并比较它们的类型.

例如,当一个类型PLAYER的演员与一个类型的水碰撞时,他会淹死......

希望能帮助到你...