使用过滤器检测 Box2d 上的碰撞并决定要做什么

Detect Collisions on Box2d with Filters but also Decide what to DO

我的游戏中会有 2 支球队,每支球队都有 X 个球,我想检测它们何时发生碰撞,而不是施加力或冲动,而是对受影响的球施加 "Damage"。

我读过有关 contactListener 的信息,但你必须检查它是来自团队 A 或 B 还是来自同一个团队等等。问题是我想使用我在某处读到的过滤器,但我无法决定当它们碰撞时会发生什么,就像它们会根据它们的密度、摩擦力等做出反应,但我想检测碰撞并应用我想要的东西。

我正在使用 libgdx 和 box2d

我推荐阅读这个:http://www.iforce2d.net/b2dtut/collision-anatomy 这是一个基于 C++ 实现的有据可查的 box2D 教程,但您会在 libGDX.

中找到所有方法和 class

对于您想做的事情,您只需在侦听器的 presolve 方法中禁用接触 (contact.setEnabled(false))。这就是告诉 box2D 不要对这次碰撞施加任何力。