在
Box2d
中,据我所知,对象具有默认的碰撞响应,这可以让它们停止移动或反弹(如果您设置了恢复)。这样的事情可能吗?
我怎样才能做到这一点?
谢谢
使用
CollisionListener
并检查您的灯具/主体的用户数据以了解该类型。然后你就可以随心所欲地处理它。如果你不希望玩家/子弹碰撞有反应,你应该禁用 Contact
中的 preSolve
(通过 Contact.setEnabled(false)
)并标记要销毁的子弹。
在这种情况下,拥有强大的碰撞处理系统是必要的。我创建了一个要点,展示了我如何通过所谓的
CollisionHandler
来做到这一点。它们负责每种类型的 EntityA 与 EntityB 冲突。 CollisionFilter
已经可以预先过滤总共的碰撞,然后 CollisionListener
将确定正确的 CollisionHandler
并将回调转发给那些。它使用反射,可能不是处理大量物体和碰撞的最快方法,但到目前为止我没有遇到任何问题。
这个基础知识是这样的:
所有灯具的用户数据都应该有自己的特定名称。
这对我有用!
实体类包含body和fixture。
编辑:可能不是你想要的,但它是一些东西
Edit2:http://pastebin.com/Cw0R7hmq类似这样的东西,可能有很多编译错误,但我希望你明白我想说的。