關于地圖的東西
你或許會考慮,為什么我要選擇這種方式呢?我可以告訴你這是最好的方法。我可以說這個地圖格式可以最快地創(chuàng)建地圖,可以產生最小的文件。我只能說在和區(qū)塊游戲大了多年交道之后,我發(fā)現這個格式最適合我的需要。但是我們也可以看看其他可能的方法,保存地圖數據的方法。
JailBitch的方法
這是原始的OutsideOfSociety的教程所采用的格式,非常簡單。他以同樣的方式把某個點的幀數字保存到二維數組中。每次你都需要檢測下一個方塊是不是墻(或者是可以撿起來的東西,或者是門,或者任何東西),你可以從地圖數組中查找數字。
(這里顯示的數組并不是全部的,下面還有沒有顯示出來)
當檢測碰撞時,你能夠可以讓某部分的幀作為墻(或者可拾取的東西,或者門)。例如,你可以讓所有的幀數在0到100的方塊都作為可通行的方塊,所有的從101到200的是墻,大于200的是特殊的方塊。
當你只有很少的方塊類型,而且方塊不會變化很多時,這是一個很好的很簡單的方式。
OutsideOfSociety的文章: http://oos.moxiecode.com/tut_01/index.html
沙漠中的樹
一些地圖具有許多不同的方塊,一些只有很少的幾種。例如,想象在沙漠中,方圓幾百公里都是沙子,如果你很幸運,你可以看到一片綠洲;蛘咴诤I希怂是水,然后出現一個海島。
如果你的地圖大部分是相同的方塊(沙子),而且只有少量的變化(樹),那么二維數組并不是很好的選擇。他會產生許多“死信息”,許多行的0,直到一些其他的frame數字出現。在這種情況下,你可以單獨聲明非沙子的方塊,然后讓剩下的方塊都是沙子。
讓我們假設你有一個100×100的地圖,有3個樹。你可以這樣寫:
當創(chuàng)建地圖的時候,你遍歷這個trees數組,放置trees方塊,讓其他的方塊顯示沙子。那樣比寫100×100的二維數組要簡單多了。 當然,當你有更多的對象(樹、灌木、草、石頭、水……),這個方法的速度不是很快,而且你也很難記住什么地方放了什么方塊。
S,M,XXXL
如果你有Flash MX或更新版本,估計你已經聽到過XML。他的格式和HTML很像,他允許聲明許多東西。你也可以用XML來保存你的地圖數據。 下面的XML地圖基于Jobe Makar的《Macromedia Flash MX Game Design Demystified》?纯催@個XML的地圖:
<map> <row> <cell type="1"> <cell type="1"> <cell type="1"> </row> <row> <cell type="1"> <cell type="4"> <cell type="1"> </row> <row> <cell type="1"> <cell type="1"> <cell type="1"> </row> </map>
這里我們設定了3×3的地圖。首先是頭部”map”,然后設置了3個”row” 結點。每個row結點有3個cell結點。
如果從外部文件中載入地圖,XML可能是很好的方案,因為大部分的XML解析可以有Flash MX內建的函數完成。從外部文本文件中載入二維數組可沒有那么簡單,你經常要靠loadVariables得到字符串,然后又不得不把字符串分割成數組,這個過程是很慢的。
XML也有缺點:他會導致更大的文件大。ú贿^對于現在的網絡,這種大小可以忽略),而且你需要Flash Player 6以上。 下面的所有例子都使用二維數組來存儲地圖數據,而且使用對象的方法來創(chuàng)建方塊,就像在“地圖的格式”中介紹的那樣。
出處:藍色理想
責任編輯:qhwa
上一頁 地圖 下一頁 創(chuàng)建方塊
◎進入論壇Flash專欄版塊參加討論
|