程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#開發WPF/Silverlight動畫及游戲系列教程(Game Tutorial):(三十八)(1)

C#開發WPF/Silverlight動畫及游戲系列教程(Game Tutorial):(三十八)(1)

編輯:關於C語言

C#開發WPF/Silverlight動畫及游戲系列教程(Game Tutorial):(三十八)地圖間的傳送與切換

終於到了地圖處理的最後一節,本節我將為大家講解如何通過傳送點實現主角在地圖間的傳送以及地圖之間的切換。地圖轉換的關鍵在於把握好移除與添加:即移除之前地圖上除主角之外的所有對象,然後再重新加載新地圖上的所有對象。本教程示例游戲中,每張地圖的信息都詳細的記錄於Config.XML配置文件中,包括每張地圖的表層、遮擋層、障礙物層等等,然後再附加上本節後面將向大家講解的傳送點信息;這樣,在地圖轉換時,我們只需根據配置文件來讀取加載相應的地圖數據即可。

實現的第一步,首先新建傳送點控件:QXTeleport,該控件包含一些傳送用的參數類屬性,例如傳送點的描述Tip、傳送點的地圖索引Key、傳送點對應傳送到的地圖代號To、傳送點傳送主角後主角出現的新坐標以及朝向等;並且該傳送點控件自帶有一個DispatcherTimer,用於傳送點動畫形式呈現。

接下來,我們要為每張地圖配置參數中添加傳送點信息:

<Teleports>
< Teleport Code="6" Key="10" To="1" ToX="530" ToY="1040" ToDirection="1" X="600" Y="600" CenterX="64" CenterY="50" SingleWidth="128" SingleHeight="100" Tip="東海龍宮" FrameNum="15"/>
< /Teleports>

這些參數對應著地圖信息以及傳送點自身的屬性信息,在本節示例游戲的邏輯中,我將傳送點的Key值記錄到障礙物數組中(目前該數組僅存的值為0或1,分別代表障礙物與非障礙物,而其他2-255之間的數均可以為我們另當別用),時時判斷主角當前所處在障礙物數組的值為某傳送點的Key值時,則觸發傳送點的傳送事件,將主角傳送到它指定的地圖:

傳送到新地圖後,通過一些邏輯將之前地圖的資源移除掉,由於目前的示例游戲整體結構已趨於復雜,在新內容不斷添加下,顯得尤為冗亂,因此具體代碼就不列出來了,大家可從源碼中自行體會。另外的,一張地圖可以包含若干傳送點負責承接多張地圖間的傳送,同樣的,我們只需在配置文件中添加多個節點即可,以下為第二張地圖的傳送點配置:

<Teleports>
 <Teleport Code="6" Key="10" To="0" …… Tip="雲海仙境" ……/>
 <Teleport Code="6" Key="11" To="2"…… Tip="天龍港" ……/>
< /Teleports>

接下來讓我們將主角移動到傳送點,此時畫面即會切換到第二張地圖:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved