簡體   English   中英

Box2D靜體碰撞性能問題

[英]Box2D static body collision performance issue

我正在使用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,但這對任何事都沒有幫助。

謝謝!

這是我正在努力工作的游戲中的代碼。 希望如果你復制和粘貼,更改一些變量名稱和東西,它可能會排序你的問題。 我是box2d的新手,所以無法准確地告訴你問題所在。 希望能幫助到你。

    //bodydef
    BodyDef bodyDef = new BodyDef();
    bodyDef.type = BodyType.StaticBody;
    bodyDef.position.set(position);
    body = world.createBody(bodyDef);

    //shape
    PolygonShape shape = new PolygonShape();
    shape.setAsBox(dimension.x / 2, dimension.y / 2);

    //fixture
    FixtureDef fixture = new FixtureDef();
    fixture.friction = 0.3f;
    fixture.shape = shape;

    body.createFixture(fixture);
    shape.dispose();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM