2011-02-01 144 views
0

我正在尋找關於如何處理捕捉精靈到瓷磚地圖的最佳選項。我正在努力製作一個Chu Chu Rocket克隆。如果你不知道這個遊戲。這是一個基於瓦片的遊戲,您可以將箭頭放置在特定的瓦片上以指引地圖周圍的人物。所以我需要在任何時候都將拼圖捕捉到拼圖的中心,然後用一個箭頭來檢測碰撞,這個箭頭會佔據整個拼貼或牆壁或其他障礙物。任何關於基於什麼樣的方式來檢測這些事情的想法,因爲我相信它需要不同類型的碰撞檢測。XNA捕捉精靈到瓷磚地圖

回答

0

將精靈對齊到一個貼圖的最簡單方法是將它們繪製在一個貼片的中心。碰撞檢測可以在你的更新函數中通過檢查你的關卡對象來完成。

class Mouse 
{ 
    public int XTile; 
    public int YTile; 
    public int XDelta; 
    public int YDelta; 
} 

//in Update 
if (Level[mouse.YTile][mouse.XTile] == Tiles.Arrow) 
{ 
    //change mouse.XDelta and mouse.YDelta based on the direction of the arrow 
} 
if (Level[mouse.YTile + YDelta][mouse.XTile + XDelta] == Tiles.Wall) 
{ 
    //change mouse.XDelta and mouse.YDelta based on wall rules 
} 

//in Draw 
int tileSize = 32; //or whatever size tile you are using 
spriteBatch.Draw(mouseSprite, new Vector2(mouse.XTile * tileSize, 
    mouse.YTile * tileSize), Color.White); 

//or, if the mouseSprite doesn't take up the whole tile 
int sizeDifference = tileSize - mouseSprite.Width; 
spriteBatch.Draw(mouseSprite, new Vector2(mouse.XTile * tileSize + sizeDifference/2f, 
    mouse.YTile * tileSize + sizeDifference/2f), Color.White); 
+0

你會如何確定鼠標瓷磚的位置,所以你會保持瓷磚居中?您是否必須檢測鼠標的邊界框是否在平鋪內?如果是這樣,那麼如果鼠標大於瓦片,這將如何工作? – jspence 2011-02-01 17:48:08