この記事は前回の続きです。
前回はAIカー…CarWaypointBasedのルート巡回について紹介しました。割と公表だったので、この部分をもう少しだけ紹介します。(人ソレを柳の下の泥鰌と言う)
CarWaypointBasedのAI部分について
CarWaypointBasedのAI部分についてですが、プレハブを見れば判る通りCar AI ControllerコンポーネントがCar Controllerコンポーネントを操縦することで実現しています。
Car AI Controllerの機能は、対象に向けて車を向けてアクセルを踏んだりブレーキを踏んだり、あとは目標地点に到達すると停止するといった機能を提供します。
要するに、Car AI Controllerは目標地点へ向けて進行する機能のみ持ちます。初期状態は、目標地点はCarWaypointBasedオブジェクト>Helpers>WaypointTargetObjectです。この座標へ向かって走ります。
例えば、クリックした位置へ車を走らせるといった挙動を作りたい場合は、WaypointTargetObjectをCarWaypointBasedから出し、クリックした位置へWaypointTargetObjectを移動させることで実現できます。これは実際楽しいです。
ただし、基本的に直線的に目標へ移動するのみの機能しか有していないので、障害物を回避する事はできません。
障害物を回避したい
障害物を回避するような挙動を期待したい場合、Waypointを使用できます。これの機能は「Carが近づいてきたらWaypointTargetObjectの座標を次のポイントへ移動させる事です。これによって、車は障害物を(事前に指示されたコース通りに)回避しつつ、コースを走り抜けることが出来ます。まるでレーシングゲームです。
Waypointの進行自体ははWayProgressTrackerが処理します。
もし町中を縦横無尽に目的地まで走らせたい場合、Navmeshと組み合せて走らせることもアイディアの一つです。人型と違ってカーブがシビアなため調整は必要ですが、軽く作っただけでもそれなりに綺麗に走ってくれます。
アイディアと力押しで色々と出来そうです。