將精靈對齊到一個貼圖的最簡單方法是將它們繪製在一個貼片的中心。碰撞檢測可以在你的更新函數中通過檢查你的關卡對象來完成。
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);
你會如何確定鼠標瓷磚的位置,所以你會保持瓷磚居中?您是否必須檢測鼠標的邊界框是否在平鋪內?如果是這樣,那麼如果鼠標大於瓦片,這將如何工作? – jspence 2011-02-01 17:48:08