在我的游戏中,我使用很多Box2D实体,其中包含多个固定装置。 而且我还使用Contact Listener来检测不同物体之间的碰撞。 不幸的是,我遇到了一个可怕的问题。当物体碰撞时,Contact Listener会检测到它不止一次。如何消除联系人监听器的抖动? 我的日志:
...
postSolve A: brows B: bShape
endContact A: brows B: bShape
endContact A: brows B: bShape
endContact A: brows B: bShape
endContact A: brows B: bShape
endContact A: brows B: bShape
endContact A: brows B: bShape
为身体的每个固定装置分配唯一的用户数据之后。
新日志:
...
endContact A: f-3 B: f-0
endContact A: f-4 B: f-0
endContact A: f-5 B: f-0
endContact A: f-7 B: f-0
答案 0 :(得分:1)
我不知道您的固定装置是如何设置的,但是很可能是您归还财产(弹跳)。尝试增加/减少它。这样可以减少您的身体如此迅速弹跳的可能性。
答案 1 :(得分:0)
我找到了解决问题的方法。我添加了一个变量,其中包含冲突状态。 代码:
public class CollisionController implements ContactListener {
private boolean collided;
...
@Override
public void beginContact(Contact contact) {
collided = false;
}
@Override
public void endContact(Contact contact) {
if (!collided && contact.getFixtureA().getUserData() != null && contact.getFixtureB().getUserData() != null) {
// CODE
collided = true;
}
}
...