Unity

Behave 2 for Unityを使ってみた

Behave 2 for Unityとは

Behaviour TreeによりAIなどのロジックの全体像を可視化することができるAssetです。

Behaviour Treeは木構造でノードとリーフを用いて、ルール/アクションを評価/実行します。

ノードのステータス

各ノードにはステータスがあります。
ステータスの詳細は以下のとおりです。

  • READY:初期値
  • SUCCESS:ノードの実行が成功
  • FAILURE:ノードの実行が失敗
  • RUNNING:ノードの実行中

ノードの種類

Action


stringとfloatのパラメータを追加できます。
実行するのみで、Actionノードの下に子ノードを配置することはできません。

Selector


左から右へ順番に実行されます。
子でSuccessが発生した時点でSuccessを上位へ返します。
Failureが発生した場合は右隣のノードへ遷移します。
すべてのノードが失敗だった場合はFailureを上位へ返します。

Priority Selector


Selectorの実行順を指定できるようにしたものです。

Sequence


Selectorが子がFailureしたら右隣のノードをチェックしにいくのに対し、SequenceはSuccessした場合のみ右隣のノードをチェックしにいきます。
Failureの場合はその場で上位へFailureを返します。

Repeater


右ノードがFailureを発生させるまで下ノードはループし続けます。

Interrupter


右ノードをチェックし、Failureの場合は子ノードへ遷移しません。
右ノードがSuccessの場合は子ノードへ遷移します。

Parallel


並列で子ノードを実行可能にするノードです。
左下のON/OFFスイッチみたいなので、子ノードがすべてSuccess/Failureしたタイミングで上位へ結果を返すか、いずれか一つでもSuccess/Failureしたタイミングで上位へ結果を返すかどうかを設定できる。

Reference


他ツリーへの参照を設定できます。

使用方法

1.Behaveエディター上でツリー(Tree)を作成

2.各ノードを配置

3.コンパイル/ビルド

4.コンパイルエラー発生


コンパイルを実行するとエラーが発生しますが、こちらは気にしなくても大丈夫です。
エラーの原因はビルド完了時に進捗バーをクリアしようとして失敗し、そのエラーがComplie関数内で実装されているみたいで、そのためにコンパイルエラーというようなダイアログが表示されてしまっています。
(紛らわしいので修正してほしい。。)

5.dll出力

ビルドされたファイルはdllとして出力されます。
dllが出力されていない場合は、どこかでビルドが失敗していると思われます。

6.ライブラリ読み込み

実際にUnity上で扱う際は、出力されたdllを読み込み、ツリーをインスタンス化します。
インスタンス化すると、各ノードの実行結果が上位ノードへ返却されます。

最上位ノードは返却されたステータスを判定し、ツリーの処理を止める(Reset)かどうかを決めます。

Behave 2 for Unityを使ってみた感想

メリット

AIロジックなどを実装する際に、全体像が可視化できるため、複雑になったとしても管理しやすいです。

再利用性も非常に高いと思います。

デメリット

ドキュメントが英語の為、導入のハードルが少し高いです。
また、初心者が扱うには難易度が高い気がしました。

関連記事

  1. Unity

    【中途採用】Unityエンジニアの転職先としてオススメする会社5選

    Unityエンジニアの需要ゲーム制作ツールとして不動の地位を築いた…

  2. Unity

    UnityIAPを導入するにあたり、つまずいた点

    UnityIAP(In App Purchase)はUnity5.3の…

  3. Unity

    UniRxを使ってコードを見やすくする

    UniRxとはUniRxは、Reactive Extensions…

  4. Unity

    UnityでUIをタップした際に、奥のWorld上のオブジェクトが反応しないようにする方法

    UnityでuGUIで作成したButtonをタップした際に奥にあるオブ…

  5. Unity

    GTMF 2018東京に行ってきたのでまとめてみる

    7月13日(金)に行われたGTMF2018東京に行ってきました。公…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

カテゴリー

最近の記事

  1. Unity

    Behave 2 for Unityを使ってみた
  2. Unity

    UniRxを使ってコードを見やすくする
  3. Unity

    UnityでUIをタップした際に、奥のWorld上のオブジェクトが反応しないよう…
  4. Unity

    GTMF 2018東京に行ってきたのでまとめてみる
  5. Unity

    UnityIAPを導入するにあたり、つまずいた点
PAGE TOP