我是libgdx和Box2d引擎的新手,正在使用它们开发游戏。我想检测两个物体之间的碰撞以执行某些功能。但我不知道最佳方法,并且还想获取碰撞点。请提供一些带有代码的建议。我已经实现了ContactListener,但没有成功。我正在使用此代码作为参考:this。谢谢。
您已经正确地创建和设置了ContactListener...(对于一般设置,libgdx wiki非常好:https://github.com/libgdx/libgdx/wiki/box2d#contact-listeners)
如果您现在想处理特定的联系,例如,您需要在侦听器的beginContact();
方法中添加一些实现。 beginContact();
方法包含一个Contact
实例,其中包含您所需的所有信息:
通过fixtures,您可以访问绘制的bodies和actors。通过body.setUserData(actor);
方法可以将其与Actor连接起来。
isSensor()
检查发生碰撞的一个夹具是否为传感器... - florianbaethgegetUserData()
将返回您设置的用户数据。在我的项目中,我通常有一个扩展Group
的GameObject
类... 它包含一个Body
元素。当然,这样做并没有将渲染和模拟分开,但它很方便且易于使用... 在GameObject
的子类中创建夹具和身体时,我使用setUserData(this)
方法,将GameObject
本身作为用户数据添加到 box2d 身体中。这样,我可以通过对ContactListener
中getUserData()
的结果进行转换来访问GameObject
。 - florianbaethge