为什么我的 Box2d libgdx 游戏中有一个幻影接触点

Why there is a phantom contact points in my Box2d libgdx game

我正在使用 libgdxbox2d 编写游戏。当一个物体接触另一个物体时,经常会出现幻象接触点。这是我绘制接触点的方式:

private void renderContactPoints() {
    for (Contact contact : world.getContactList())
        for (Vector2 point : contact.getWorldManifold().getPoints())
            renderer.getBatch().draw(tex, point.x * PPM, point.y * PPM, 20, 20);

}

问题截图

为了性能 Box2DlibGDX 重新使用数组以避免重新分配,因此您不能迭代完整的结果getContactListgetPoints,因为您会得到太多结果。

改为先查询商品数量:

private void renderContactPoints() {
    for(int i = 0; i < world.getContactCount(); ++i) {
        Contact contact = world.getContactList().get(i);
        for (int j = 0; j < contact.getWorldManifold().getNumberOfContactPoints(); ++j) {
            Vector2 point = contact.getWorldManifold().getPoints()[j];
            renderer.getBatch().draw(tex, point.x * PPM, point.y * PPM, 20, 20);
        }
    }
}