我不會檢查兩個紋理之間的像素到像素,如果我是你。雖然只檢查一點與地圖也不算太壞,
//In Class-scope:
Color[] CollisionMapData;
Texture2D CollisionMap;
public void LoadContent()
{
CollisionMap = Content.Load<Texture2D>("map");
CollisionMapData = new Color[CollisionMap.Width * CollisionMap.Height];
CollisionMap.GetData<Color>(CollisionMapData);
}
public Boolean Collision(Vector2 position)
{
int index = (int)position.Y * CollisionMap.Width + (int)position.X;
if (index < 0 || index >= CollisionMapData.Length) //Out of bounds
return true;
if (CollisionMapData[index] == Color.Black)
return true;
return false;
}
對證地圖整個玩家精靈,你就必須要求在玩家精靈的每個像素碰撞方法,創造了vector2得到正確的點。 檢查可能有幾點比較容易(例如:頂部,頂部中間,頂部,左側,右側,底部左側,底部中間,底部。因爲邊已經被測試,所以不需要檢查中間。)
我意識到這有些偏離主題,但如果你正在開發一款新遊戲,你應該知道XNA是「死」的:http://www.wpcentral.com/xna-dead-long-live-xna。在您嘗試創建新內容之前,您可能需要查看MonoGame:http://monogame.codeplex.com/ – hross 2013-02-15 12:56:38
您想顯示一些碰撞代碼嗎? – 2013-02-15 12:58:38
我用Google搜索了一下,但大部分文章都很古老,看起來真的很長時間。我也很傷心地意識到Xna已經死了(但是我仍然覺得它是一個令人愉快的平臺,我目前沒有任何代碼可以顯示,我希望首先得到一些通用的指導,甚至可以預先得到一些僞代碼,因爲經過很多次嘗試我的代碼從未工作。 – 2013-02-15 13:44:36