經過 28 節主角功能完善,怪物等精靈仍無行動能力。賦予 AI(人工智能)即賦予靈魂與智慧。MMORPG 基礎 AI 為「追蹤者」:發現敵對玩家/精靈 → 鎖定目標移動 → 進入攻擊範圍發起物理/魔法攻擊 → 對方跑開則持續追擊循環。這正是上節主角戰鬥模組的直接體現。
主角與怪物同為 QXSpirit,前章實現的移動、攻擊、追擊、傷害方法可通用。原方法無參數、以 Leader 為主體,現為所有方法添加 QXSpirit spirit 參數,內部 Leader 全改為 spirit。
原:
private bool ArriveTarget() { return (storyboard != null && storyboard.GetCurrentProgress(Leader) == 1); }
改:
private bool ArriveTarget(QXSpirit spirit) { return (Super.storyboard.ContainsKey(spirit.Name) && SpiritStoryBoard(spirit.Name).GetCurrentProgress(spirit) == 1); }
同時將 storyboard 改為字典管理所有精靈移動動畫:
public static Dictionary<string, Storyboard> storyboard = new Dictionary<string, Storyboard>();
private Storyboard SpiritStoryBoard(string key) { return Super.storyboard.Single(x => x.Key == key).Value; }
private void StraightMoveTo(QXSpirit spirit, Point p)
{
if (!Super.storyboard.ContainsKey(spirit.Name)) Super.storyboard.Add(spirit.Name, new Storyboard());
// ...
}
字典管理方便高效,Lambda 輕鬆取得指定 Storyboard。下節將實作具體 AI 邏輯。