2011-05-22 17 views
5

我希望在游戏中支持非常大的世界。这通常不是问题,因为我可以剔除大部分的世界,因为它一次不可见。不过,Box2D似乎并不喜欢我的想法!Box2D中大型静态边缘地形的性能问题

我的地形目前由大约1000个边缘形状组成。但是,这似乎工作得很好,但是: 即使添加了少数(〜25)个动态对象(小圆圈)后,性能也会急剧下降!

  • 为什么会发生这种情况,动态 树应该很早就 消除所有影响 静态地形形状没有性能损失, 不应该吗?
  • (How)我可以解决这个问题吗?
+1

我相信这个问题已经在Box2D svn中处理过了。除了使用最新版本更新Box2D代码之外,您可能无法解决此问题。 – iforce2d 2011-06-16 10:26:32

回答

1

答案是因为边缘形状不会与其他边缘形状相冲突。

从手册:

边缘形状是线段。提供这些是为了帮助您为游戏制作一个自由形式的静态环境 。 边缘形状的一个主要限制是它们可以与圆形和多边形相碰撞,但它们本身不会与 相碰撞。 Box2D使用的碰撞算法要求两个碰撞形状中至少有一个具有体积。边缘形状没有 体积,所以边缘碰撞是不可能的。

所以即使你有许多边缘形状,因为它们不会相互碰撞,你没有看到性能下降。一旦你添加了一些对象,box2d开始检查冲突。