我正在使用带有box2D的libGDX,并且我有两个具有碰撞过滤的实体,因此它们无法相互碰撞。
我正在为这些实体使用groupIndex过滤器,所以你可以想象。
但我想检测与接触式听众的身体碰撞,即使它们不能相互碰撞。
有办法吗?
我没有放任何代码,因为这是一个问题,我认为没有必要,至少现在......
如果你能帮助我,谢谢你!
使用联系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;
为它们应该碰撞的物体设置一些其他位。
希望有所帮助