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