Box2D的。一些成熟。可破坏的地形

时间:2013-12-04 07:49:26

标签: box2d game-physics

所以,我想创建一个具有可破坏地形的平台游戏。我使用物理引擎box2d for java。我有一个想法是做很多小静电球,它们会在对它们有一些影响时被破坏。有更好的想法吗?这不会减慢性能吗? enter image description here

第二个问题。如果我这样做,怎么能填写这个区域图片?类似于蠕虫的风格。

enter image description here

2 个答案:

答案 0 :(得分:1)

除了您的想法也应该有效之外,它可能缺乏解决方案,这使我更喜欢this方法。

答案 1 :(得分:0)

我有类似的想法,并准备在接下来的几周内尝试一下。我打算做一座城堡和城堡#34;我的孩子们的射击游戏。这是我要做的解决方案:

  1. 创建一个静态的U形盒子,横跨地形的底部,两侧大约在屏幕的一半。
  2. 使用许多小球,每个球都有一个固定的半径(标称值为0.1米,可以在Box2d中使用的最小尺寸)。
  3. 执行大量物理迭代而不更新屏幕直到结束让它稳定下来,或检查所有睡眠。
  4. 地形选项#1: 将屏幕区域划分为垂直框,每个框中有几个像素。它们会从屏幕的底部延伸到顶部并将其分成垃圾箱。然后计算每个bin的AABB(在box2d坐标中),然后使用box2d中的AABB查询来查找该框中的所有实体。取出找到的物体的最大Y位置并使用该(+半径)找到该箱中的最高点。连接所有垃圾箱中的所有最高点,这将为您提供可以绘制的连续线等。

    地形选项#2: 创建一个0.2米长x 0.1米长的长链,每端连接旋转接头。将链条从顶部放置在地形顶部。现在角色可以走过它。

    在选项#1或选项#2中,当一个"炸弹"击中,摧毁炸弹中心附近的大量球(或你使用的任何多边形),物理应该让它们掉落。

    我当然会自己尝试一下,看看能否让它发挥作用。

    更新 嗯...有时候......在你的头脑中似乎是一个好主意,但实际上......不是那么多。我做了一个演示了丢弃大量不同大小的球以创建一个随机的"地形。地形并不是特别令人兴奋。我还使用AABB查询来移除触摸屏幕的球。这有效......但也不是特别令人兴奋。所以,一个很好的基础"运行在box2d"示范,但可能不是这个问题的好答案。 FWIW,代码发布在github here上。