2012-02-14 62 views
3

我的工作不是游戏,因为我无法找到用于检测与旋转矩形碰撞良好的碰撞检测方法,我决定尝试这样的: 我有一个旋转矩形(我想我可以得到它的边角的坐标(的CGRect的也许一些功能或三角如有必要) 我想沿着连接两个角落(甚至只是int类型的行中的所有坐标,或具有一定的增量,以便它不会太长),然后把它们放到一个数组中,然后我可以检查它的边界矩形不旋转的包含矩形的球,如果它包含数组的任何点的话。如果是这样,他们相撞。获取一条线的坐标阵列

有没有得到这些坐标到一个数组中的一个简单的方法?假设我知道开始和结束? 我的理解是效率不高,但现在我使用的是OpenGL颜色检测,它太慢了,而且效果不好,所以我需要一种新的方法。

谢谢!

+0

它可能会更容易找到一个线段和一个圆的交点。 [这是一个链接](http://doswa.com/2009/07/13/circle-segment-intersectioncollision.html)。 – user1118321 2012-02-14 05:19:06

+0

感谢您的评论,这几乎是我以后,只是不知道如何得到这条线,并检查交叉在Objective-C – 2012-02-14 05:30:00

回答

1

您已经通过您的矩形的边缘线。只要拿走你的4角的X,Y坐标,你就有4条线。

一般用碰撞几乎总是可以找到一种方法来伪造它,我只用一个旋转的矩形的碰撞,如果你真的需要理会它,很多时候,你可以采取什么看起来像一个矩形,只是给它一个圆形的碰撞。

如果您正在使用旋转矩形坚持另一种方法,你可以尝试是逆旋转适用于这两个对象,然后检查碰撞。因此,如果矩形旋转45度,则将矩形旋转回-45度,使其与轴对齐,然后旋转圆的中心-45度。现在你有一个更简单的碰撞工作。

你可以得到更多的在这里: Circle-Rectangle collision detection (intersection)

+0

谢谢你的答案。关于你的第一句话。我有4个角落,但它是如何给我的线?这是我最初的问题。 – 2012-02-14 18:46:55

+0

你有4行,你必须检查每一行。 - 左上右上,右上右下等 – TurqMage 2012-02-14 18:51:13

+0

不,我的意思是,我怎么能得到这些点之间的线? – 2012-02-14 18:57:38