为了检测两个圆圈之间的碰撞,我们检查它们的中心之间的距离是否小于半径之和。
要检测圆和圆之间的碰撞(在本例中为半),请执行以下操作:
有什么合理的方法来计算移动物体上的这种情况吗?也就是说,碰撞不会因为帧的离散性而被忽略?
发布于 2015-06-28 05:42:46
扫描物体的碰撞检测是很有挑战性的,但也有一些共同的解决方案。
一种方法是,当测试两个物体时,使用相对论的概念,你可以建立数学模型,这样一个物体就能得到另一个物体的运动,这样它的运动对象就能和静态的物体测试。
另一种方法是,如果您使用诸如MPR或GJK之类的东西来进行碰撞检测,那么您就可以从字面上进行扫描测试形状,就好像它们只是普通的对象一样。(但发现碰撞时间并不是很简单)。
最后,我见过的简单解决方案在这些情况下使用了很多.只需沿着对象路径进行多个测试。基本上,只需采取大的运动,并把它分成一系列较小的运动,这样你可以确保不会有遗漏的碰撞,并在每一步碰撞测试。
做一些类似于测试直线段是否作为“预过滤器”相交的动作显然也是个好主意(:
发布于 2015-06-28 03:25:20
我会尝试一个半简化的答案。假设您存储以前的帧时间和位置(以及旋转)
计算点X插值dT = frameTime * FrameDistance/(X-PositionC1atFrameA)
检查其他圆C2在dT的位置(检查它是否与C1相交)
在dt处计算Rot C1和Rot C2
最后应用你的逻辑(2,3,4点)
编辑:找到了一个关于问题的详细分析:球面扫描试验
https://gamedev.stackexchange.com/questions/103087
复制相似问题