2013-02-11 81 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]

我不知道你的項目的背景,但我猜你不會想讓你的網格代表一堆長方形很長。