我通過一塊蒙板恰當的覆蓋在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