首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 開發 WPF/Silverlight 動畫與遊戲系列教程(三十八):地圖傳送與切換機制

     編輯:關於C#

前言

地圖處理最後一節,講解如何透過傳送點實現主角在地圖間傳送與地圖切換。關鍵在於「移除舊地圖物件(保留主角)→ 載入新地圖物件」。本教程每張地圖資訊記錄於 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>

執行畫面

第二張地圖「東海龍宮」含兩傳送點,可自由往返「雲海仙境」與「天龍港」。

補充說明

正式網遊地圖切換伴隨大量資料載入,常見做法:顯示背景圖+進度條,透過畫布透明化與禁用輸入實現。本節源碼未加載入過程。

重構宣告

本節邏輯因功能持續堆疊導致結構冗雜,存在 Bug。決定進行第二次重構,並轉移至 Silverlight 平台,標誌 WPF 教程結束。未來將基於 Silverlight 3.0 完美繼承既有功能並持續演進,期待與大家共同打造更強引擎!

出處:https://alamiye010.cnblogs.com

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved