我需要定义一个将成为“合法”区域的多边形,并允许用户在该多边形内移动一个矩形,防止它们将矩形移动到多边形外部的任何位置。
多边形是一个固定的形状,所以,我认为最简单的方法是导入那个形状的PNG并以某种方式拉出这些点?但是当用户拖动矩形的坐标时,我仍然不知道检查矩形坐标所涉及的数学,并测试它们将形状移动到边界多边形边缘的位置。
不幸的是,边界多边形是一个相当复杂的形状。我希望有人可以指点我的教程,说明运行这种碰撞检测的最佳方法是什么。
答案 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