0

我正在使用 Box2D(特别是 jBox2D)并且我正在尝试进行类似俄罗斯方块的块碰撞(即在它们相互重叠之前停止,以便它们无缝互锁)

在形状与另一个形状相交之前确定沿“射线”的最后位置的最简单方法是什么?(即确定块在特定方向行进时应该结束的位置,以便它与其他块顺利互锁) Box2D 似乎提供了通用的光线投射功能,但我看不出如何使用所提供的功能轻松做到这一点。


(注意:通常块游戏可以建模为网格,这大大简化了碰撞/目的地检测,因为您不必依赖实际的 2D/3D 属性。但是不可能使用这样的网格在我的情况下)

4

1 回答 1

0

好的,我想我有办法解决这个问题,至少在我的情况下——一旦我正常计算出光线投射的交点,我就编写了一些可以确定的函数(基于对象的大小和形状) intersected + intersecting) 对象应该“到达”以与另一个块很好地啮合的位置。所以我基本上解决了同样的问题,但不是直接用光线投射本身。在某些极端情况下它的效果不是很好,但对于我目前的项目来说已经足够了

但是,我仍然对原始问题是否有确切答案感兴趣:在正常光线投射之上是否有一种方法或变体可以确定形状相交之前的最后一个“好”位置?

@iforce2d - 也许我误解了,但 Box2D 给我的信息肯定只会是十字路口的位置以及距离起点有多远?两者都不能完全满足我的要求-我想要交叉点之前的最后一个点,可以将两个形状定位为不相交(即尽可能靠近它们而不相交)

于 2011-06-13T20:46:57.410 回答