AI
概述
- 賽車AI使用一個「追兔」導航方法及一個HFSM來進行決策
- 可用多種AI困難度設定(非常簡單、簡單、中等、困難、非常困難)
- AI導航的駕駛線支援多種線、各種難度的線以及線分支
- AI永遠不會直接控制車輛位置或旋轉。它生成輸入,其之後以來自真實玩家的輸入的相同的方式被處理。
兔
街機賽車AI使用 追兔 (或 跟隨兔) AI技術。「兔」跑在車輛前面,而車輛試著追逐/追上它。在街機賽車範本中,兔就是一個空的實體,其沿著駕駛線移動或由一個導航網格代理所控制。AI之後基於方向及車輛到兔子的距離,來生成輸入。
移動
兔不需要流暢地移動。它不需要考慮物理,就可以從一個點跳到另一個點、加速或減速,並且它在車輛轉彎之前先轉彎。所有這些因素都有助於管理AI車輛處理的複雜性。簡單地把兔送到某個點,車輛就會可靠地跟隨它。
注意事項: 兔通常不會準確地跟隨駕駛線,而是使用與它之間的一個基於AIConfig
值的位移,以完成一個更自然的行為。
兔通常以車輛的最高速度奔跑。如果車輛加速(比如使用氮氣),它也可以加速,如果兔跑的太前面,它也可以等待車輛。當兔遠於一個特定的距離,它也可以立即貼齊到車輛前面。
當兔離車輛越來越近(比如根據駕駛線速度而減速),AI將更改輸入以減速,以避免跑到兔前面。因此,兔有效地規定了所需的最高速度。
視覺效果
為了顯示兔實體,請搜尋AI兔預製件,並且啟用其MeshRenderer
元件。
駕駛線
駕駛線是一組點的集合,其描述了車輛應該駕駛的地方;或是更準確地,兔應該奔跑的地方。各個點可以有困難度以及速度乘數,以更動AI將選擇的線以及它通過點時的速度。
駕駛線在場景地圖內嵌流程時被內嵌到遊戲遊玩場景實體。請參見 駕駛路徑編輯器 章節以取得更多細節。
這可以是有著不同困難度的多條線,代表著一條捷徑的線或僅僅是駕駛過彎的一個替代道路。
線點不需要被精確地定位。在內嵌流程時,一個線的開始與結束點將被融合到最近的線。
HFSM
街機賽車範例的AI在決策方面是相當簡單的。它只用於決定何時使用氮氣。
跟隨線動作
在兔已經抵達目標目的地時,FollowLineAction
設定兔的目的地。目的地本身基於玩家檢查點而被設定。
注意事項:目前在駕駛線上沒有路徑尋找。兔簡單地推定它跟隨線之後將抵達目標目的地。
AI困難度
AI困難度透過AIConfig
及AIHandling
資產被定義。
AIConfig
用於控制HFSM的設置值,以及更改兔在駕駛線周圍的行為。AIHandling
負責生成AI輸入。可繼承自AIHanding
類別,以建立一個完全自訂的AI處理行為。