Libgdx Box2D 仅针对少数特定对象的控制碰撞响应



Box2d中,据我所知,对象具有默认的碰撞响应,这使它们可以停止移动或反弹(如果您设置了恢复原状(。
你也可以说,物体是一个传感器,所以你可以实现自己的碰撞响应。
现在,我想对某些类型的碰撞使用默认的碰撞响应,同时我想完全控制与特定对象的碰撞。
例如:如果玩家与墙壁相撞,他应该停止移动或反弹,但当他与子弹碰撞并且子弹应该被移除时,它应该松开 Hp。
所以我想要类似接触过滤器的东西,但与过滤器不匹配的对象应该与默认的 behaivor 反应。

这样的事情可能吗?
我该怎么做?

谢谢

使用CollisionListener并检查灯具/主体的用户数据以了解类型。然后你可以随心所欲地处理它。如果您不希望玩家/子弹碰撞有响应,则应禁用preSolve中的Contact(通过 Contact.setEnabled(false) (并标记要销毁的子弹。

在这种情况下,拥有强大的碰撞处理系统是必要的。我创建了一个要点,展示了我如何通过所谓的CollisionHandler来做到这一点,这些负责每种类型的实体A与实体B的碰撞。CollisionFilter已经可以预先过滤冲突,然后CollisionListener将确定正确的CollisionHandler并将回调转发给这些冲突。它使用反射,可能不是处理大量身体和碰撞的最快方法,但到目前为止,我在这里没有遇到任何问题。

您可以在此处找到要点。

这个基础知识是这样的:

http://pastebin.com/9vzZUbTT

所有灯具的用户数据都应具有自己的特定名称。

这对我有用!

实体类包含主体和夹具。

编辑:可能不是你想要的,但这是一些东西

编辑2 : http://pastebin.com/Cw0R7hmq 像这样的事情,可能有很多编译错误,但我希望你明白我想说的。

最新更新