HOME

【unity】AIアセットbehavior designer使い方

どうもききです。

今回はunityのAIアセットbehavior designerの使い方について解説したいと思います。

behavior designerとはAIを簡単に作成できるアセットでツリー構造を使ってAIを構築していきます。

今回は基本的な部分を解説しながらAIがプレイヤーを発見したら追跡し何もなければパトロールするという部分までやってみようと思います。

まず下準備としてステージを作成します。

スポンサーリンク

ステージの準備

ステージとなるオブジェクトのstaticにチェックを入れます。

次に上のメニューからwindowを選択しその中のnavigationメニューを出す

navigationメニューを開きその中のBakeというボタンを押す。

それでステージが青色になったらOK.

これはAIが動く経路を設定するのに必要なものでこれをやらないと

AIは動かない。

AIを作成する

それではbehaviordesignerを使って構築していきたいと思います。

AIを設定したいキャラクターを選択した状態で

上のメニューからtool→behaviordesigner→Editorを選択。

するとこんな画面が出てくる。

右側のメニューからtaskがズラッと並んでいます。

taskとはAIを実行するための動作scriptを部品化したようなもの…。

この中の部品を一個一個組み合わせて一連のAIのツリー(AIの構造体)を作成する感じです。

先に言うとAIがプレイヤーが視界にいたらを追跡しそれ以外は周辺をパトロールする

ツリーはこんな感じです。

この中にある重要なタスクについて解説したいと思います。

selector(セレクター)タスクとsequence(シーケンス)タスクについて

selectorタスクはOR回路で片方が〇なら成功を返す。

sequenceタスクはAND回路で両方がOなら成功を返す。

 

タスクの実行順は優先順位によって決定され上から下りながら行していき左側優先なので左端からタスクを実行していきます。

流れとしてはこんな感じです。

AbortTypeについて

次に重要なのがAbortTypeというものです。

selectorタスクやsequenceタスクはcompositesタスクというグループで(親タスク)

その下にあるタスクが子タスクとなります。

compositesタスクはAbortTypeを設定することができます。

左端から順にタスクを実行していくといいましたが何も設定していなかったら

基本的に実行可能なタスクを1回実行して終わってしまいます。

画像にあるcanseeobject(ターゲットが視界にいるかどうか判定する)

というタスクはconditionalと呼びIF文みたいなもので

右側のタスクが実行可能かどうかを判定するので基本的にグループ(親と子)の左側にあります。

グループの右側のタスクが実行タスクでActionタスクといいます。

AbortTypeを設定していないとスタートからターゲットが視界に入っていない時点で

AIは終了しそのあと視界に入っても実行されません。

(一回失敗したタスク(×になったタスク)は二度と実行されない。

それを防ぐためにAbortTypeでうまく循環させないといけません。

AbortTypeを設定するにはconpositesタスクを選択してInspectorを開けば設定画面が出てきます。

AbortTypeには三つのタイプがあり

both一回失敗したタスクが実行可能であれば実行する。

self失敗したタスクは完全に終了する。

Lowpriority優先順位が高いタスクが実行可能であれば実行中のタスクを強制終了して優先順位が高いタスクを実行させる。

基本的にはbothを設定しておけば大丈夫だと思います。

Navmeshを設定する

最後にNavmeshAgentコンポーネントをAIを設定したキャラクターに追加します。

これをつけておかないとAIは動かない。

以上で設定は終了です。

スポンサーリンク