如何进行正确的二维网格到圆碰撞检测

How to make a correct 2d mesh-to-circle collision detection

本文关键字:维网格 碰撞检测 何进行      更新时间:2023-10-16

我正在为我的游戏做一个网格到圆的碰撞系统。我看到了一些例子,在这些例子中,你迭代网格的所有vert,并检查它们是否在圆圈内。但问题是,有时顶点不在圆内,而是这些顶点形成的线。在这种情况下,碰撞检查的求值结果为false,而应该求值结果为true。如何进行这种类型的良好碰撞检测?(在c/c++中)

如果需要,可以计算直线到圆心的距离。但我认为成本太高了。如果距离低于无线电,你可能会发生碰撞。您需要检查直线的这一部分是否在点之间。距离线到点

实际上,快速谷歌可以让你知道这是堆栈溢出问题的重复:圆线段碰撞检测算法?

只需对所有边进行迭代。不要担心顶点:如果一个顶点在圆内,某条边必然会穿过它(除非整个网格都在圆内——我猜这不太可能)。