【发布时间】:2010-11-19 15:13:43
【问题描述】:
我已经习惯了只使用矩形来进行碰撞检测,所以我现在有点难过。我正在研究类似钻石的形状,在过去的几个小时里,我一直在试图弄清楚如何检查碰撞。
我试图检查第一个对象的四个点是否在第二个对象的点内,但这只是一个框(我认为)
我觉得我对此有困难的原因是角度。
【问题讨论】:
-
您可以检查一个形状中两点之间的线是否与另一种形状中两点之间的线相交。您可以遍历形状中的所有相邻节点。这将提供最准确的碰撞检测,除非形状在周围。
-
@bhavinp 我明白了;我需要弄清楚检查线路碰撞的最佳方法是什么。我假设我必须使用某种坡度?
-
@Robert Fratto 创建一个使用两个点创建线段的函数。然后制作另一个函数来测试这些线段是否相交。这应该是简单的线性代数,或者您可以找到在线资源来帮助解决这个问题。然后你只需要测试两个形状的每个顶点的相邻点。
-
@Robert Fratto 注意:我能想到的一种方法是使用两个点创建一条线,然后使用矩阵求解。如果你能找到一个用于矩阵计算的 API,那将会很有帮助。那么如果矩阵有解(有交点),只要检查那个交点是否在框内即可。
-
对所有线段对进行线-线相交测试 (a) 效率低下 (b) 它通常不起作用:如果一个多边形完全包含在另一个多边形中,则多边形相交,但没有任何线段相交。