Java 在LibGDX box2D中具有筛选器的实体之间使用联系人侦听器
我将libGDX与box2D一起使用,我有两个具有碰撞过滤的实体,因此它们不能相互碰撞 我使用groupIndex过滤器来过滤那些身体,你可以想象 但是我想检测与联系人侦听器的身体碰撞,即使它们不能相互碰撞 有办法吗 我没有写任何代码,因为这是一个问题,我认为没有必要,至少现在Java 在LibGDX box2D中具有筛选器的实体之间使用联系人侦听器,java,libgdx,box2d,collision,Java,Libgdx,Box2d,Collision,我将libGDX与box2D一起使用,我有两个具有碰撞过滤的实体,因此它们不能相互碰撞 我使用groupIndex过滤器来过滤那些身体,你可以想象 但是我想检测与联系人侦听器的身体碰撞,即使它们不能相互碰撞 有办法吗 我没有写任何代码,因为这是一个问题,我认为没有必要,至少现在 如果你能帮助我,谢谢你 使用ContactsetEnabled方法。 在ContactListener中: @Override // In preSolve method. Not beginContact, it ma
如果你能帮助我,谢谢你 使用Contact
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\u比特
和GROUND\u比特
是你身体上不应该碰撞的比特,但ContactListener会捕捉到它们之间的接触,设置为:
fixturedef.filter.categoryBits = GROUND_BIT;
为应该碰撞的物体设置一些其他位
希望有帮助。谢谢你的回复,将他们的装置设置为传感器,但我无法将其设置为传感器,因为我只是不想在这两个物体之间发生碰撞。如果我把它放在传感器上,身体就不会与没有身体的物体碰撞,我不想这样。正如我所说,我只是想避免这两个物体之间的碰撞。没别的了,哇!问题解决了!。让我看看我是否理解这个条件的作用,通过预解,我可以检测出哪种过滤器发生碰撞。如果我记得清楚的话,我用categoryBits和maskBits设置了什么样的物体应该相互碰撞。我不确定,但是,如果将contact设置为false,则预解算器检测到的两个物体固定装置不应该碰撞,请告诉我我是否擅长于此。