我正在使用带有box2D的libGDX,我有两个具有碰撞过滤功能的物体,因此它们不会相互碰撞。
我正在为这些机构使用 groupIndex 过滤器,所以你可以想象。
但我想检测与接触侦听器的身体碰撞,即使它们不能相互碰撞。
有办法吗?
我没有输入任何代码,因为这是一个问题,我认为没有必要,至少目前是这样......
如果你能帮助我,谢谢!
使用联系人setEnabled
方法。
在联系人侦听器中:
@Override // In preSolve method. Not beginContact, it matters
public void preSolve(Contact contact, Manifold manifold) {
short firstBit = contact.getFixtureA().getFilterData().categoryBits;
short secondBit = contact.getFixtureB().getFilterData().categoryBits;
if ((firstBit | secondBit) == (BOX_BIT | GROUND_BIT)) {
System.out.println("Contact " + firstBit + " " + secondBit);
contact.setEnabled(false);
}
}
这些位BOX_BIT
和GROUND_BIT
是您身体不应该碰撞的部分,但 ContactListener 将捕获它们之间的接触,将其设置为:
fixturedef.filter.categoryBits = GROUND_BIT;
为它们应该碰撞的物体设置一些其他位。
希望有帮助。