我是XNA 4.0的新手,有一个我似乎无法弄清楚的问题。到目前为止,我一直在通过创建矩形并检查rectangle.contains
方法来检测鼠标点击,但如果我不想检查矩形内部怎么办?
在我的地图的一部分中,我有一个三角形按钮,我想让用户点击,但我想只将它计为一次点击,如果它实际上在三角形内。如果我在三角形周围创建一个矩形,用户可以在纹理区域外单击,如果你知道我的意思。
我该怎么做?
答案 0 :(得分:1)
您必须使用Point in Polygon Algorithm来获得更复杂的形状:
检查凸多边形(您的三角形)比凹形多边形更简单(请参阅第一个链接文章)。
如果您必须进行大量检查并达到性能限制,请考虑使用某种层次结构,Quadtree或LOD系统。例如,您可以为非常复杂的多边形计算额外的边界矩形,如果该点位于矩形内,则仅对多边形进行昂贵的检查。