2011-11-23 19 views
4

我正在嘗試製作一個「地牢爬行」類型的遊戲演示,這是我第一次真正製作Pong & Pac-Man克隆以外的任何東西。現在我的大掛斷是創造實際的水平。我已經完成了關於如何在屏幕上繪製圖塊的教程,但是我找不到從哪裏出發。在XNA中創建和保存貼圖地圖

我該如何從一個屏幕去製作一個更大的地下城?任何幫助表示讚賞。

+1

是2D還是3D? – neeKo

回答

5

您應該考慮從2維數組開始。通過這種方式,您可以非常容易地直觀地表示數據。

與初始化啓動關:

//2D array 
int[,] array; 

一些樣本數據:

array= new int[,] 
     { 
      {0, 2, 2, 0}, 
      {3, 0, 0, 3}, 
      {1, 1, 1, 1}, 
      {1, 0, 0, 0}, 
     }; 

創建自己的枚舉,這將索引地圖中的每個整數:

enum Tiles 
{ 
    Undefined = 0, 
    Dirt = 1, 
    Water = 2, 
    Rock = 3 
} 

然後加載你的紋理,以及一次只查看你的數組一個項目。根據您的紋理尺寸,你可以很容易地在屏幕上繪製的紋理,因爲在你的地圖介紹:

for (int i = 0; i < array.Count; i++) 
{ 
    for (int j = 0; j < array[0].Count; j++) //assuming always 1 row 
    { 
     if (array[i][j] == (int)Tiles.Undefined) continue; 

     Texture = GetTexture(array[i][j]); //implement this 

     spriteBatch.Draw(Texture, new Vector2(i * Texture.Width, j * Texture.Height), null, Color.White, 0, Origin, 1.0f, SpriteEffects.None, 0f); 
    } 
} 
+0

這是一個很好的答案。對於像我這樣的初學者非常有用。 @Jon,你知道網上有關於此的任何資源嗎?試圖找到基本的東西已被證明是一個巨大的浪費時間。我花了超過3周的時間尋找基本的東西(比如沿着平臺做滾球),我還沒有找到任何東西。 –

+1

@ÅőşęņŎńę你可以看看XNA資源中的tile引擎教程。它在解釋這些概念方面做得很好:http://www.xnaresources.com/default.asp?page=TUTORIALS 沿平臺做球滾動可能聽起來很基本,但實際上有點複雜。您正在處理移動,碰撞檢測和碰撞響應。 – jgallant

1

的PSK http://msdn.microsoft.com/en-us/library/dd254918(v=xnagamestudio.31).aspx是由微軟創建了一個演示使用的ASCII文件創建水平。還有很多演示和教程以及其他內容。 Jon所描述的方法是一樣的。

例如:

....... 
.....e. 
xx...xx 
..s.... 

其中一個點是空的空間,s是起始位置和e是敵人。因爲你知道每個圖塊都是(例如)32x32像素,所以你簡單地將's'放置在座標(2x32,3 * 32)上。

有很多種方法來處理這個難題。

要製作多個屏幕,您需要實現相機類。你可能想要的是一個滾動級別。但是我建議你在進一步學習之前先學習從數組,ascii文件等中製作單個屏幕。