基于Box2D网格的碰撞

时间:2013-12-20 21:44:16

标签: java libgdx box2d

首先让我快速告诉我正在尝试的内容。我正在使用Box2D进行类似俄罗斯方块的游戏,我知道Box2D可能不是这种情况下的最佳选择,但我真的需要正常的物理也因为水平有障碍物而且如果你击中它们就应该旋转。

这是展示我的意思的图片。

enter image description here

案例1: 这就是我想要的。

案例2: 这是我的一个想法,只是为了使落件的块尺寸稍微小一点,以便它们很好地适应空的空间。正如预期的那样,问题是街区周围的空地。让它看起来像盒子不属于那里。

案例3: 保持下降块的块大小与“墙”块大小相同,它永远不会到达空白区域,因为边缘碰撞并且它保持不变。

那么我怎样才能让它适合填充它的空白空间而不会看起来很奇怪?

编辑:如果我将下降对象的大小设置得更小,则在这种情况下不会起作用: enter image description here

这是图像来展示我想要的行为:

enter image description here

1 个答案:

答案 0 :(得分:3)

1)在你的身体上使用setFixedRotation(true) 2)使其小于可用空间(从两侧)。使差异变得如此之小以至于效果是不可见的(但对于box2d来说就足够了)。

这应该可以解决你的问题 边缘不会碰,但如有必要,您也可以尝试去除摩擦。

注:
在你的使用案例中使用物理引擎可能有点过分,但这并不是一个坏主意,因为如果你正确使用它就不需要做太多。
祝你好运。

<强>更新
1)不要让物体变小。让它们变薄。 :)
Small vs Thin 这应该可以解决你的第一个问题。

2)如果你想要在下一种情况下显示的行为,你期望在跌落时自由旋转+接触地面时的正确方向。这两件事本质上是相互矛盾的。

我建议重新考虑你的策略。但是如果你决心以同样的方式去做,那么有一些奇怪的方法可以实现它(没有什么是不可能的,对吧?)。 我现在能想到的是实现所有物体始终走向最接近正确方向的趋势(外部力矩作为当前方向的函数)。它应该在渲染中更新。它实际上是一个控制系统,但不能保证在它碰撞时能够实现方向,物理也不会看起来很自然。试着扩大你的想象力并享受乐趣。如果你找到更好的方法,我当然希望看到它。

享受。