我正在使用Box2D(具体是jBox2D)而我正在尝试进行类似俄罗斯方块的块碰撞(即在彼此重叠之前停止,以便它们无缝互锁)
在形状与另一个形状相交之前确定沿着“光线”的最后位置的最简单方法是什么? (即确定块在特定方向上移动时应该以什么位置结束,以便与其他块平滑地互锁)Box2D似乎提供了通用的光线投射功能,但我无法看到如何使用提供的功能轻松完成。
(注意:一般情况下,块游戏可以建模为网格,这大大简化了碰撞/目的地检测,因为您不必依赖于实际的2D / 3D属性。但是不可能使用这样的网格在我的情况下)
好吧,我想我有办法解决这个问题,至少在我的情况下 - 一旦我像往常一样从光线投影中找出交叉点,我已经编造了一些可以确定的函数(基于对象的大小和形状)相交+交叉)对象应该“到达”的位置与另一个块很好地网格化。所以我基本上解决了同样的问题,但没有直接解决光线投射问题。有一些极端情况,它不能很好地工作,但它对我的项目来说已经足够了
然而,我仍然感兴趣的是,是否对原始问题有一个确切的答案:是否有正常光线投射的方法或变体可以确定形状在它相交之前的最后“好”位置?
@ iforce2d - 也许我误解了,但是Box2D给我的信息肯定只会在路口的位置和距离一开始有多远?两者都没有完全做我想要的 - 我想要在交叉点之前的最后一点,这两个形状可以定位,以便不相交(即尽可能靠近在一起而不相交)