Box2D中大型静态边缘地形的性能问题

时间:2011-05-22 12:28:35

标签: c++ performance physics box2d

我想在我正在制作的游戏中支持非常大的世界。这通常不是问题,因为我可以剔除世界上的大部分,因为它不是一次都可见的。但是,Box2D似乎不喜欢我的想法!

我的地形目前包含大约1000个边缘形状。然而,这一点似乎没有问题: 即使我只添加了几个(~25个)动态对象(小圆圈),性能也会急剧下降!

  • 为什么会这样,动态 树应该取消所有未受影响的 静态地形很早就形成了 没有性能惩罚, 不应该吗?
  • (怎么样)我可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

答案是因为边缘形状不会与其他边缘形状发生碰撞。

从手册:

  

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

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