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

C#開發WPF/Silverlight動畫及游戲系列教程(Game Tutorial):(四十一)(3)

編輯:關於C語言

我通過一塊蒙板恰當的覆蓋在Mini雷達地圖面板上,從而只有在該蒙板面積區域內的對象,包括小地圖及它上面呈現的對象等才能被顯示出來。因此我們可以將主角移動用的“托盤式”主位地圖移動模式完美移植到Mini雷達地圖中,兩者可調用同樣的方法(參數不同而已)。這裡還涉及到一些性能方面的技巧,例如主角的坐標及Mini雷達地圖地圖圖片的移動是時時的;而其他物體對象的移動則可以將它們放到間隔為500毫秒的輔助後台線程中處理,包括他們的添加/移除。在本教程示例游戲中,我設定可以添加進Mini雷達地圖中的對象呈現類型為UIElement,這意味著大家可以充分發揮想象與創造力來美化它。例如我將主角用綠色文字來表示,而怪物則用粉色描邊的圓矩形表示等等。

......
if (sprite == Leader) {
miniMap.MiniMap.Children.Add(new TextBlock() {
Name = string.Format("Obj{0}", sprite.Name),
Text = Leader.VSName,
FontSize = 10,
Foreground = new SolidColorBrush(Color.FromArgb(255, 206, 241, 190)),
});
} else {
miniMap.MiniMap.Children.Add(new Rectangle() {
Name = string.Format("Obj{0}", sprite.Name),
Width = 6,
Height = 6,
RadiusX = 3,
RadiusY = 3,
Stretch = Stretch.Fill,
Fill = new SolidColorBrush(Color.FromArgb(255, 184, 105, 167)),
StrokeThickness = 1,
Stroke = new SolidColorBrush(Color.FromArgb(255, 88, 88, 88))
});
}
……

此Mini雷達地圖可謂麻雀隨小五髒俱全,大家可以在此基礎上發揮更多的創新,例如在上面代碼中為每加入的新的對象矩形添加一個ToolTip;這樣,當我們鼠標懸停在它上面時即可以顯示該對象的名字等等。

下一節,我將繼續為大家講解如何制作另一種Mini雷達地圖:全景Mini尋路地圖,敬請關注。

附:

--09.11.20

1)修正魔法裝飾特效偏移錯誤問題

2)修正障礙物會被突破BUG

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