Shape raycasting:确定不与某物相交的最后位置的最佳方法?

问题描述

| 我正在使用Box2D(特别是jBox2D),并且尝试进行类似俄罗斯方块的块碰撞(即,在彼此重叠之前停止,以便它们无缝地互锁) 在形状与另一个形状相交之前确定沿“射线”的最后位置的最简单方法是什么? (即,确定块在特定方向上移动时应该以什么位置结束,以便与其他块顺利互锁)Box2D似乎提供了通用的光线投射功能,但是我看不到如何使用提供的功能轻松地做到这一点。 (注意:一般来说,积木游戏可以建模为网格,这极大地简化了碰撞/目标检测,因为您不必依赖实际的2D / 3D属性。但是,不能像在我的情况下)     

解决方法

        好吧,我认为我有办法解决这个问题,至少对于我的情况而言-一旦我正常地从光线投射中计算出交点,我便炮制了一些可以确定的函数(基于对象的大小和形状)相交+相交)对象应“到达”与另一个块很好地啮合的位置。因此,我基本上可以解决相同的问题,但不能直接使用射线广播本身解决。在一些极端的情况下,虽然效果不佳,但对于我的项目而言已经足够了 但是,我仍然对原始问题是否有确切答案感兴趣:在正常的光线投射上方是否有方法或变体可以确定形状在相交之前的最后“好”位置? @ iforce2d-也许我误会了,但可以肯定Box2D给我的信息只会是路口在哪里,距路口还有多远?两者都不能完全满足我的要求-我想要交点之前的最后一点,可以将这两个形状定位为不相交(即,在不相交的情况下,它们尽可能地靠近在一起)