我正在使用 JBox2d 在我正在处理的游戏项目中执行碰撞检测。我用静态物体代表世界上的障碍。每当动态物体(即游戏角色)与其中一个障碍物发生碰撞时,性能就会出现非常明显的下降。Fps 将从 ~120 下降到 ~5。当静态物体的角碰撞时,这种情况似乎更频繁地发生。
当我将世界障碍物的身体类型设置为动态而不是静态时,密度非常高(以防止身体在碰撞时移动),这个问题就消失了......但是这个解决方案并不适合我的情况……
关于什么可能导致这种巨大的 fps 下降的任何想法?
这是我用来创建静态主体的代码:
BodyDef def = new BodyDef();
def.type = BodyType.STATIC; // If this line is commented and the other
//commented lines are uncommented, the issue goes away.
//def.type = BodyType.DYNAMIC;
def.position.set(worldBounds.getCenterX(), worldBounds.getCenterY());
Body staticBody = b2World.createBody(def);
PolygonShape box = new PolygonShape();
box.setAsBox(worldBounds.getWidth() * 0.5f, worldBounds.getHeight() * 0.5f);
FixtureDef fixture = new FixtureDef();
fixture.shape = box;
fixture.friction = 0.3f;
//fixture.density = 1000000000;
staticBody.createFixture(fixture);
//staticBody.setSleepingAllowed(true);
//staticBody.setFixedRotation(true);
我尝试使用 CircleShape 而不是 PolygonShape,但这无济于事。
谢谢!