什么是进行碰撞检测的最佳方法?

时间:2012-02-24 22:02:23

标签: android collision-detection polygon android-canvas

我需要定义一个将成为“合法”区域的多边形,并允许用户在该多边形内移动一个矩形,防止它们将矩形移动到多边形外部的任何位置。

多边形是一个固定的形状,所以,我认为最简单的方法是导入那个形状的PNG并以某种方式拉出这些点?但是当用户拖动矩形的坐标时,我仍然不知道检查矩形坐标所涉及的数学,并测试它们将形状移动到边界多边形边缘的位置。

不幸的是,边界多边形是一个相当复杂的形状。我希望有人可以指点我的教程,说明运行这种碰撞检测的最佳方法是什么。

2 个答案:

答案 0 :(得分:4)

Metanet的excellent collision detection tutorial有一个很好的部分,介绍如何与轴对齐的边界框(AABB)和任意“墙”进行扫描碰撞。

如果您的多边形是凹的,您可能会发现最容易将其分解为多个凸多边形,这将简化可用的碰撞检测算法。

答案 1 :(得分:1)

如果你只是想检查矩形的角落,你可以做一个"内部"测试他们每个人。 http://en.wikipedia.org/wiki/Point_in_polygon

如果你还想确保没有多边形的尖头部分"穿孔"您的矩形可以对矩形中的4条线中的每条线对多边形中的所有线进行测试,以查看它们是否相交。 http://en.wikipedia.org/wiki/Line-line_intersection