読者です 読者をやめる 読者になる 読者になる

テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

Unity5 車の自動操縦を行うAIカーでもう少し遊ぶ

Unity StandardAssets

f:id:tsubaki_t1:20150407000354g:plain

この記事は前回の続きです。

tsubakit1.hateblo.jp

前回はAIカー…CarWaypointBasedのルート巡回について紹介しました。割と公表だったので、この部分をもう少しだけ紹介します。(人ソレを柳の下の泥鰌と言う)

CarWaypointBasedのAI部分について

CarWaypointBasedのAI部分についてですが、プレハブを見れば判る通りCar AI ControllerコンポーネントCar Controllerコンポーネントを操縦することで実現しています。

f:id:tsubaki_t1:20150407001304p:plainCar AI Controllerの機能は、対象に向けて車を向けてアクセルを踏んだりブレーキを踏んだり、あとは目標地点に到達すると停止するといった機能を提供します。

要するに、Car AI Controllerは目標地点へ向けて進行する機能のみ持ちます。初期状態は、目標地点はCarWaypointBasedオブジェクト>Helpers>WaypointTargetObjectです。この座標へ向かって走ります。

f:id:tsubaki_t1:20150407001653p:plain

f:id:tsubaki_t1:20150407001705p:plain

例えば、クリックした位置へ車を走らせるといった挙動を作りたい場合は、WaypointTargetObjectをCarWaypointBasedから出し、クリックした位置へWaypointTargetObjectを移動させることで実現できます。これは実際楽しいです。

ただし、基本的に直線的に目標へ移動するのみの機能しか有していないので、障害物を回避する事はできません。

障害物を回避したい

障害物を回避するような挙動を期待したい場合、Waypointを使用できます。これの機能は「Carが近づいてきたらWaypointTargetObjectの座標を次のポイントへ移動させる事です。これによって、車は障害物を(事前に指示されたコース通りに)回避しつつ、コースを走り抜けることが出来ます。まるでレーシングゲームです。

f:id:tsubaki_t1:20150407002843p:plain

Waypointの進行自体ははWayProgressTrackerが処理します。

f:id:tsubaki_t1:20150407002455p:plain

もし町中を縦横無尽に目的地まで走らせたい場合、Navmeshと組み合せて走らせることもアイディアの一つです。人型と違ってカーブがシビアなため調整は必要ですが、軽く作っただけでもそれなりに綺麗に走ってくれます。

f:id:tsubaki_t1:20150407003156g:plain

アイディアと力押しで色々と出来そうです。