C#開發WPF/Silverlight動畫及游戲系列教程(Game Tutorial):(四十一)制作精美的Mini地圖①
用什麼來承受未來幾個月日思夜想的折磨?除了學習還是學習。
感慨了一翻,嘿嘿。本節我將為大家講解如何為Silverlight游戲制作一個精美的Mini地圖。Mini地圖又分兩種,一種是通常處於游戲窗口右上角的Mini雷達(導航)地圖;另一種是全景Mini尋路地圖。本節我先向大家講解如何制作導航Mini雷達地圖。此類地圖在游戲中主要起到導航作用,即引導主角前行的方向,並且呈現出主角周圍的各種對象,諸如:怪物、NPC、傳送點等等;更多的,您還可以為之添加近距離尋路等高級功能。
首先是設計階段,大家不妨先看一副圖:
我為本教程游戲制作的Mini雷達地圖包含大致幾個功能:
1)顯示/隱藏Mini地圖功能。實現起來很簡單,只需修改Mini雷達地圖的身體呈現區域部分的Visibility即可。但是該功能卻對整個游戲的性能起著巨大的調節作用。大家應該都清楚Mini雷達地圖幾乎相當於游戲窗口的一個縮小型副本,它更新且呈現的元素是很多的,特別是在對性能要求很大的WebGame中,這迫使我們必須為之安裝個開關以控制當我們不需要看導航Mini地圖時暫時將之關閉,從而停掉相關的邏輯運算及對象呈現;比如在大量殺怪中,Mini雷達地圖基本沒什麼作用,這時我們就可以通過此按鈕關閉它,節省出更多的CPU使游戲更加流暢,使玩家更能體驗戰斗的快感。
2)Mini地圖縮放功能。這裡我需要先向大家講解一下我的Mini雷達地圖制作及處理方法;當然,或許您還有比之更好的解決方案,望提出。至於我這個方案,則是建立在多種嘗試之後篩選出來的個人感覺比較完美的處理方式。
第一步,我首先為每張地圖制作一個等比例縮小N倍,且統一尺寸的地圖圖片。以我的Demo中第一個地圖為例,該地圖原始尺寸為4800*3600,那麼我將之縮小8倍後尺寸為600*450;然後通過PS保存出30質量的圖片容量只有30多K,同時它還可以做為下一節中我將為大家講解到的Mini雷達地圖圖片源所用,一舉兩得。同樣的,第二副地圖尺寸為2400*1800,那麼我將之縮小4倍後尺寸同樣為600*450,依次類推。當然,如果不規則尺寸的地圖也可以同樣處理,只需將之縮小一定倍數,使之最終尺寸小於且接近600*450這個尺寸即可,至於600*450這個尺寸怎麼來的?詳見下節。
第二步,為Mini雷達地圖添加配置,以第一副地圖為例:
<MiniMap Scaling="8" MinScaling="1" MaxScaling="30" />
該配置描述了Mini雷達地圖縮小的倍數,以及最小、最大值變動縮放限制范圍。即對應上圖中的X,以及右邊的-、+按鈕功能。