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

WPF/Silverlight 遊戲開發教程(二十七之三):動態障礙物系統完成與測試

     編輯:關於C語言

跨執行緒呼叫必須在 Dispatcher 關聯執行緒執行委派,使用 this.Dispatcher.BeginInvoke() 實現異步處理,優先級設為 DispatcherPriority.Normal。

後台工作完成事件處理

private void BackWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
    count += 1;
}

可對異步結果管理、計數刷新次數。

測試動態障礙物

螢幕左下角按鈕,每次點擊地圖上方妖精向右下移動 50 像素。走到它旁邊,移動後站到原位置測試障礙物是否仍存在,向新位置移動測試新障礙物是否生效:

總結與建議

  • 1 秒頻率刷新在高精度遊戲不夠,建議 WPF ≤500ms、Silverlight 1s。
  • 過小間隔會造成效能消耗與錯誤識別導致穿越。
  • 固定障礙物 FixedObstruction 地圖載入時固定,房屋牆壁樹木永不可穿越。

後續擴展方案

  1. 怪物共用固定障礙物,怪物間會重疊。
  2. 精靈增加 Obstruction 屬性保存自身障礙物資訊,完美但耗時耗空間。
  3. 最佳方案:僅在發起移動前拷貝全域 VaryObstruction,處理副本作為此次移動障礙物。

20 隻怪物隨機佈局測試圖:

相對主角的完美障礙物系統完成,下節進入戰鬥系統。

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