Processing 处理:当一个物体移动“太快”时,如何检测碰撞?

Processing 处理:当一个物体移动“太快”时,如何检测碰撞?,processing,collision-detection,Processing,Collision Detection,我有两个对象:一个是球,它的速度是由速度x和速度y的向量组成的,这样,在每一帧,球的x,y位置都会更新为x+速度x,y+速度y;另一个是一个非常薄的不能移动的水平矩形。当然,我希望球无论从上方还是从下方击中矩形,都能改变其轨迹 然而,我遇到了一个我不知道如何解决的问题:每当球的移动速度足够快,以至于在一帧内从矩形的一侧移动到另一侧时,碰撞就不会被检测到,因为球实际上从未与矩形接触。由于矩形非常薄,发生这种行为的最小速度甚至不太高 我知道这是一个经常发生的问题,当你想把一个物体保持在屏幕内时:事实

我有两个对象:一个是球,它的速度是由速度x和速度y的向量组成的,这样,在每一帧,球的x,y位置都会更新为x+速度x,y+速度y;另一个是一个非常薄的不能移动的水平矩形。当然,我希望球无论从上方还是从下方击中矩形,都能改变其轨迹

然而,我遇到了一个我不知道如何解决的问题:每当球的移动速度足够快,以至于在一帧内从矩形的一侧移动到另一侧时,碰撞就不会被检测到,因为球实际上从未与矩形接触。由于矩形非常薄,发生这种行为的最小速度甚至不太高

我知道这是一个经常发生的问题,当你想把一个物体保持在屏幕内时:事实上,如果你只要在它离开屏幕时改变它的速度符号,这并不一定会使你的物体反弹到窗口的一侧,因为它的移动速度太快,以至于它的一部分卡在边缘之外,所以你必须先在窗口内重新定位它,然后相应地改变它的速度符号。但是我不能在这里使用这个技巧,因为长方形两边的球的行为应该是不同的:如果球从上面击中它,它会向上反弹;如果从下面,它会向下反弹。但是,当球在一帧内通过矩形时,我如何告诉程序球应该重新定位在哪一侧?毕竟,一旦绘制了该帧,程序就无法知道球是否来自矩形的“另一侧”,或者它是否始终位于该一侧


我希望我能把我的问题解释清楚。我能做些什么来解决它呢?

取球的上一个位置和球的当前位置,然后创建一条线。使用该线执行碰撞检测,而不是球本身。测试直线和矩形之间的碰撞检测

这将比测试一个圆和一个矩形之间的碰撞检测要复杂一点,但是谷歌搜索直线-矩形碰撞检测将返回大量结果。基本上,您需要将矩形分解为4条线,然后检查每条线是否与路径线相交

这个问题可能有助于: