[英]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.