基本上我有一个矩形网格,每个75x75,并排。我正在将一个物体放入这些矩形中,当我放置物体时,我需要找出它与MOST相交的矩形。
很可能看起来像这样:
private Rectangle placeObject(Vector2 cursorPosition)
{
Rectangle HolderRectangle;
Rectangle r1 = new Rectangle((int)cursorPosition.Position.X, (int)cursorPosition.Position.Y, 70, 70);
Foreach( Rectangle r in rectangles)
{
r2 = new Rectangle((int)r.Position.X, (int)r.Position.Y, 75,75)
if( r1.Intersects(r2))
{
//Check how much it intersects
//if it intersects more than the current holder Rectangle
//set HolderRectangle = r2
}
}
return HolderRectangle;
}
我问的是甚至可能吗?如果是这样的话?感谢所有回复=)
答案 0 :(得分:3)
如果所有矩形都是相同的大小,你可以只取其中心,你想检查其中心,测量两点之间的长度,并对其他矩形做同样的事。
答案 1 :(得分:0)
如果只是放置在网格中,你肯定不必迭代所有的“矩形”
您知道网格组件的尺寸,在本例中为75x75。如果将X和Y位置除以75,就知道它属于哪个网格元素,如果您的相机可以滚动,则必须考虑偏移。
考虑到你的例子只显示了一个矩形列表,我猜你的2D地图实际上只是一维数组。您可以按[y * numRectsPerRow + x]
我不知道你的项目的背景,但我猜你不会想要长时间用一堆矩形表示你的网格。
答案 2 :(得分:0)