戰鬥AI設計的結果如下:最簡單的戰鬥AI設計
【實作結果】
遊戲戰鬥AI實作
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuQDN4EDOzYTM2IDOwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.gif)
采用緊跟的追蹤方式,Player選擇了最近的目标為敵人,拖動敵人,Player跟随,當敵人距離過遠時,Player沒有了目标,停止移動。
采用鎖定的追蹤方式,無論敵人移動到哪裡,Player都會移動到敵人前進行攻擊
采用重擇的追蹤方式,在追蹤敵人的過程中遇到更符合條件的目标就更換敵人
【實作過程】
采用nodecanvas輔助實作這個設計,由于目前的設計很簡單,我們不用根據設計結果提煉出條件節點和行為節點,全部采用行為節點,結果如下:
使用一個Sequencer,動态周遊三個行為節點,其分别對應設計中的三個階段。
Sequencer按從最高優先級到最低優先級(從左到右)的順序執行其子節點,當所有子節點成功完成時傳回成功,當任何子節點失敗時傳回失敗。
行為節點采用自己所寫的腳本。
- 建立一個PlayerController腳本,為其設定陣營、追蹤方式和攻擊目标字段。
- 建立一個PlayerManager腳本管理所有角色,其是單例模式, 并實作了SearchTargets和ChooseEnemy方法等。
- 建立FindEnemy腳本,在OnExecute中實作找到敵人
- 建立MoveToEnemy腳本,在OnUpdate中實作攻擊觸發、移動和追蹤方式判定
- 建立AttackEnemy腳本,在OnExecute中調用PlayerController的攻擊方法