與上一節中魔法的傷害范圍以鼠標點擊的點為圓心的圓類似,此方法可以拓展到任意個點的多邊形,無論是閉合的或是不閉合的。毫不誇張的說,所有范圍攻擊類型魔法均可以采用此方法來判斷,本節的精華哦! ^ ^
至此我們完成了激光魔法的整個制作及使用流程。回過頭來,大家有沒有想過為什麼我們要使用矢量圖形魔法?因為矢量魔法控件可以根據參數的不同自由的更改例如顏色,尺寸,旋轉等等,就好比本文的激光魔法,我們只需修改Fill和OuterFill這兩個屬性即可讓整個激光改頭換面:
//深藍激光
laser.Fill = Super.CreateRainbowBrush(231, 255, 255, 0, 255, 255, 255, 0.5, 231, 255, 255, 1);
laser.OuterFill = Colors.MidnightBlue;
又如:
//紅色激光
laser.Fill = Super.CreateRainbowBrush(255, 225, 225, 0, 255, 255, 255, 0.5, 255, 225, 225, 1);
laser.OuterFill = Colors.Pink;
是不是很神奇!更甚者,我們還可以根據需要,讓激光從產生後逐漸變長直到最後消失:
矢量魔法的靈活萬變告訴我們,只要您擁有一流的矢量繪圖能力,均可以制作出強大且性能優越的矢量控件,這是使用WPF/Silverlight開發高性能高質量游戲所必須的,同時也是位圖控件所不能比擬與替代的。
本節的源碼中我還添加了幾個新的魔法,大家在運行的時候是否發現它們的名稱後面均帶有一個屬性名,如“激光[雷]”。其中“雷”代表該魔法具有雷屬性;在以往的游戲中,雷屬性意味著麻痺,這就是我下一節將為大家講解的如何在游戲中實現魔法的不同屬性效果,敬請關注。