我是libgdx和Box2d引擎的新手,我正在开发一个使用它的游戏。我想检测两个物体之间的碰撞以执行某些功能。但是我不知道这样做的最佳方式也想要得到碰撞点。用代码提供一些建议。我已经实现了ContactListener,但无济于事。
我正在使用this代码作为参考。
由于
答案 0 :(得分:6)
您已经以正确的方式创建并设置了ContactListener ...(对于常规设置,libgdx wiki很棒:https://github.com/libgdx/libgdx/wiki/box2d#contact-listeners)
如果您现在想要处理特定的联系人,那么您需要在侦听器的beginContact();
方法中添加一些实现。 beginContact();
方法包含Contact
个实例,它可以满足您的所有需求:
通过灯具,您可以访问正在绘制的实体和演员。与Actor的连接可以通过body.setUserData(actor);
方法完成。
现在您需要决定如何找出正确的碰撞。您可以使用传感器,这些传感器只是作为传感器的box2d灯具。这意味着当一个物体与一个传感器发生碰撞时,它不会反弹,而是会反过来掉落。但是,您可以在侦听器中检测到此联系人。
此外,向actor添加某种GameObjectType可能是个好主意。想象一下,你创造了一个跳跃游戏,玩家从平台跳到平台,下面有水。然后你会用PLAYER,WATER,PLATFORM等类型创建你的演员......通过box2d体的getUserData()方法你现在可以访问Actors并比较它们的类型。
E.g。当一个类型PLAYER的演员与一个类型的水碰撞时,他会淹死......
希望它有所帮助...