2013-02-11 29 views
0

基本上我有一个矩形网格,每个75x75并排。我将一个对象放入这些矩形中,当我放置该对象时,我需要确定它与MOST相交的矩形。如何确定哪个矩形正在相交更多C#XNA

这很可能会是这个样子:

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; 
} 

就是我问甚至可能吗?如果是这样如何? )

回答

3

如果所有的矩形都是相同的大小,你可以把它的中心,你想要检查intersetcion的中心,测量两点之间的长度,并做与其他矩形相同。

0

如果这仅仅是在网格中,你当然不必遍历所有的“矩形”

你知道网格组件的尺寸,在这种情况下,75x75的位置。如果您将X和Y的位置除以75,则您知道它属于哪个网格元素,如果您的相机可以滚动,则必须考虑偏移。

考虑到你的例子只显示矩形列表,我猜你的2D地图实际上只是一个一维数组。你可以索引到[y * numRectsPerRow + x]

我不知道你的项目的背景,但我猜你不会想让你的网格代表一堆长方形很长。