當我們在地圖上點擊鼠標右鍵時,首先判斷主角與施放點之間的距離是否在施法距離內,如果是則放出魔法,否則我們計算出能該方向上與釋放點距離剛好為主角施法距離的點,然後主角向該點跑去,到達後再施法:
同時,我將法術的參數定義在XML參數文件中:
<Magics>
< Magic Code="0" HasDirection="false" FrameNum="19" EffectiveFrame="4" SingleWidth="320" SingleHeight="344" Radius="140" CenterX="154" CenterY="214">
<Level Value="1" ATK="120" Consumption="10"/>
<Level Value="2" ATK="160" Consumption="15"/>
<Level Value="3" ATK="200" Consumption="20"/>
<Level Value="4" ATK="240" Consumption="25"/>
<Level Value="5" ATK="280" Consumption="30"/>
<Level Value="6" ATK="320" Consumption="35"/>
<Level Value="7" ATK="380" Consumption="40"/>
<Level Value="8" ATK="500" Consumption="50"/>
<Level Value="9" ATK="700" Consumption="60"/>
< /Magic>
……
<Magics>
大家可以看到,每個法術都擁有一個法術代號用於法術標識(上面的法術代號為Code="0")並且分列出法術各等級的附加攻擊力(ATK)與消耗的魔法值(Consumption),然後在施放魔法之前首先判斷施法者的魔法值與該魔法的魔法消耗值之間的大小關系以判斷施法者當前魔法值是否足夠支持施法者施法:
……
if (VSpell < consumption) {
Super.ShowText(this, true, true, "NotEnough", "魔法值不足", 22, Colors.Green, 0.5);
}
……