HOME

【unity】behavior designer使い方 実戦的なAI

どうもききです。

今回は【unity】behavior designerの使い方に関する記事を書こうと思います。

今回は実戦的なAIの構築方法についてお話したいとおもいます。

銃撃戦をテーマとしてAIの一連の行動パターンは

  1. センサー(視界に何か入るか音が聞こえるか)に何も反応しないときは周辺をパトロール
  2. ターゲットが視界に入ったら追跡する。
  3. 攻撃範囲に入ったら追跡をストップしターゲットを攻撃する。
  4. HPが50パーセント以下になったら逃げる
  5. ターゲットが視界から姿を消した場合視界に入るまで近辺を探索する。
  6. HPが0になったらAIを終了する。

優先順位で並べ替えると

スポンサーリンク

6→4→3→2→5→1となる。

まず今回使う重要なタスクについて解説したいと思います。

Repeater

Repeater直下のタスクを繰り返し実行するためのタスクです。

AbortTypeでbothを使うといろいろと面倒なことになります。

このタスクがいかに優れているのかを軽く触れておきます。

画像を見てもらったらわかるように子タスクは成功した場合上位タスクに

成功を返します。一番上のEntryまで成功が返ってしまうとAIが終了します。

これを防ぐためには成功を上に返してはいけないわけですが

Repeaterを使えば成功がRepeaterに帰ってきた場合リセットして

もう一度再評価してくれます。これが繰り返しの仕組みですね。

Float Comparison

同じものでbool ComparisonもありますがComparisonタスクとはAとB比較する

判定タスクとなります。

less ThanはFloat1<Float2を表します。

Parallel Selector

並行処理のSelectorタスクとなります。

子タスクを全て同時実行しどれかが成功を返したら上に成功を返します。

Until Success

このタスクの子タスクが成功を返すまで続けるといった使い方をします。

例えで言うとターゲットが視界に入るまで成功を返さない。

Inverter

成功と失敗を逆転させるタスク

使い道としてはターゲットが視界にいない場合成功を返したり

ターゲットが範囲内にいないなら成功を返したりなどあらゆるタスクを応用できるのが利点です。

いちいち視界に入らなかった場合のタスクは作らなくていい。

ツリーのサンプル

以上を踏まえてツリーを構築してみるとこんな感じになります。

他サンプル

追跡システムを複雑にした感じです。

下のツリーはエネミーの追跡から攻撃までの基本的な行動パターンを

だいぶコンパクトにした感じです。

スポンサーリンク