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



我需要定义一个"合法"区域的多边形,并允许用户在该多边形内移动矩形,防止他们将矩形移动到其点在多边形外冒险的任何地方。

多边形是一个固定的形状,所以,我想导入这种形状的PNG并以这种方式拖动点可能是最容易的,不知怎么的?但是,当用户拖动矩形时,我仍然不知道如何检查矩形的坐标,并测试他们在什么点将形状移动到边界多边形的边缘。

不幸的是,边界多边形是一个相当复杂的形状。我希望有人能给我介绍一个教程,展示运行这种碰撞检测的最佳方法。

Metanet出色的碰撞检测教程中有一个很好的部分介绍了如何使用轴对齐边界框(AABB)和任意"墙"进行扫掠碰撞

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

如果只想检查矩形的角,可以对每个角进行"内部"测试。http://en.wikipedia.org/wiki/Point_in_polygon

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

相关内容

最新更新