我正在尝试在自己制作的2D游戏中实现碰撞系统。分离轴定理(如metanet的碰撞教程所述)似乎是处理碰撞检测的一种有效且健壮的方法,但我不太喜欢它们使用的碰撞响应方法。通过沿最小重叠轴盲目移动,该算法仅忽略了运动对象的先前位置,这意味着它在进入静止物体并随后反弹时不会与静止物体发生太多碰撞。
这是一个很重要的情况的示例:
根据上述SAT方法,该矩形将简单地从垂直于其斜边的三角形中弹出:
但是,实际上,矩形应该停在三角形的右下角,因为如果矩形沿着其位移矢量连续移动,那将是第一个碰撞点:
现在,这在游戏过程中可能实际上并不重要,但是我很想知道是否存在一种以这种方式有效且普遍地获得准确位移的方法。在过去的几天里,我一直在为之绞尽脑汁,我还不想放弃!
(从StackOverflow交叉发布,希望这不违反规则!)