我将libGDX与box2D一起使用,并且我有两个具有碰撞过滤功能的物体,因此它们不会相互碰撞。
我正在为那些物体使用groupIndex过滤器,所以可以想像。
但是我想检测与接触听者的身体碰撞,即使他们无法相互碰撞。
有办法吗?。
我没有输入任何代码,因为这是一个问题,我认为没有必要,至少到目前为止。
如果可以帮助我,谢谢!。
答案 0 :(得分:1)
使用联系人setEnabled
方法。
在ContactListener中:
@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;
为应该碰撞的物体设置其他位。
希望有帮助。