2011-05-22 19 views
5

我希望在遊戲中支持非常大的世界。這通常不是問題,因爲我可以剔除大部分的世界,因爲它一次不可見。不過,Box2D似乎並不喜歡我的想法!Box2D中大型靜態邊緣地形的性能問題

我的地形目前由大約1000個邊緣形狀組成。但是,這似乎工作得很好,但是: 即使添加了少數(〜25)個動態對象(小圓圈)後,性能也會急劇下降!

  • 爲什麼會發生這種情況,動態 樹應該很早就 消除所有影響 靜態地形形狀沒有性能損失, 不應該嗎?
  • (How)我可以解決這個問題嗎?
+1

我相信這個問題已經在Box2D svn中處理過了。除了使用最新版本更新Box2D代碼之外,您可能無法解決此問題。 – iforce2d 2011-06-16 10:26:32

回答

1

答案是因爲邊緣形狀不會與其他邊緣形狀相沖突。

從手冊:

邊緣形狀是線段。提供這些是爲了幫助您爲遊戲製作一個自由形式的靜態環境 。 邊緣形狀的一個主要限制是它們可以與圓形和多邊形相碰撞,但它們本身不會與 相碰撞。 Box2D使用的碰撞算法要求兩個碰撞形狀中至少有一個具有體積。邊緣形狀沒有 體積,所以邊緣碰撞是不可能的。

所以即使你有許多邊緣形狀,因爲它們不會相互碰撞,你沒有看到性能下降。一旦你添加了一些對象,box2d開始檢查衝突。