私が取り組んでいるゲーム プロジェクトで JBox2d を使用して衝突検出を実行しています。世界の障害物を静止体で表現しています。ダイナミック ボディ (ゲーム キャラクタなど) がこれらの障害物の 1 つに衝突すると、パフォーマンスが著しく低下します。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);
PolygonShape の代わりに CircleShape を使用してみましたが、何の役にも立ちません。
ありがとうございました!