從紅白機到 PS3,經典遊戲角色常駐夢境。UO 開啟網遊新時代,虛擬世界敞開魔幻大門。本節講解最華麗且易實現的圓形範圍群攻魔法。
建立 QXMagic 控件,賦予屬性(見原始碼)。關鍵:每個魔法擁有生命執行緒播放幀動畫,從產生到結束由一系列幀組成。
註冊視窗右鍵事件:
private void Window_MouseRightButtonDown(object sender, MouseButtonEventArgs e) {
if (Leader.Action == Actions.Death) return;
Leader.MagicTarget = p;
if (Super.InCircle(Leader.X, Leader.Y, p.X, p.Y, Leader.MagicRange)) {
ChangeDirection(Leader, p);
DoMagic(Leader);
} else {
Leader.IsMagicMove = true;
double n = Math.Sqrt(Math.Pow(p.Y - Leader.Y, 2) + Math.Pow(p.X - Leader.X, 2));
double x = p.X - (p.X - Leader.X) * Leader.MagicRange / n;
double y = p.Y - (p.Y - Leader.Y) * Leader.MagicRange / n;
MoveTo(Leader, new Point(x, y));
}
}
點擊處在施法距離內直接施法,否則跑到距離邊緣再施法。
<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 9 ...
</Magic>
</Magics>
施法前判斷魔法值是否足夠:
if (VSpell < consumption) {
Super.ShowText(this, true, true, "NotEnough", "魔法值不足", 22, Colors.Green, 0.5);
}
遍歷攻擊半徑 (Radius) 圓內所有敵對精靈,攻防計算產生傷害並顯示:
擊殺怪物獲得經驗值並顯示:
經驗值表參考《魔獸世界》,載入 LevelUpExperienceList 陣列:
<LevelUp>
<Experience Level="2" Value="400"/> ... 至 Level 25 ...
</LevelUp>
遞迴處理升級邏輯:
public static void EarnExperience(QXSpirit spirit, int value) {
if (spirit.VExperience + value >= LevelUpExperienceList[spirit.VLevel + 1]) {
spirit.VLevel += 1;
value = spirit.VExperience + value - LevelUpExperienceList[spirit.VLevel];
spirit.VExperience = 0;
EarnExperience(spirit, value);
} else {
spirit.VExperience += value;
}
}
完成準備施法→判斷→傷害→經驗值完整流程。新增調試按鈕:
單體/輔助魔法若時間許可後續補充。夢想延續,緬懷經典,期待更好網遊。出處:https://alamiye010.cnblogs.com/