ノードの構成要素
ルートノード
ビヘイビアツリーを実行する際に一番最初にアクティブになるノードです。
1つの子ノードと接続できます。
コンポジットノード
1つか複数の子ノードを持ち、どの子ノードを実行するかの制御を行います。
どのように制御するかはCompositeBehaviourスクリプトで記述されています。
また、後に説明するDecoratorスクリプトやServiceスクリプトを追加できます。
組み込みCompositeBehaviour
- Selector
子ノードを左から順に実行し、子ノードが 成功を返した時点で終了 し成功を返します。
すべての子ノードが失敗を返した場合は失敗を返します。
左から順に成功ノードを探し、それ以降のノードは実行したくない場合に用います。 - Sequencer
子ノードを左から順に実行し、子ノードが 失敗を返した時点で終了 し失敗を返します。
すべての子ノードが成功を返した場合は成功を返します。
子ノードが成功を返す限りすべて実行させたい場合に用います。
組み込みCompositeBehaviourのリファレンスはこちらを参照してください。
Arborリファレンス : 組み込みCompositeBehaviour
アクションノード
アクションを実行するノードです。
どのようなアクションを行うかはActionBehaviourスクリプトで記述します。
また、こちらもDecoratorスクリプトやServiceスクリプトを追加できるようになっています。
組み込みActionBehaviourのリファレンスはこちらを参照してください。
Arborリファレンス : 組み込みActionBehaviour
ActionBehaviourスクリプトの作成についてはこちら。
Decoratorスクリプト
条件判定を行って実行中ノードの中断や割り込みを行ったり、終了するタイミングで繰り返し判定などを行えるスクリプトです。
コンポジットノードやアクションノードに追加して使用します。
組み込みDecoratorのリファレンスはこちらを参照してください。
Decoratorスクリプトの作成についてはこちら。
条件判定について
複数のDecoratorが1ノードに追加されている場合、すべてのDecoratorの条件判定の結果がtrueの場合にのみノードを実行します。
AbortFlagsについて
中断や割り込みの対象はAbortFlagsで制御します。
- Self
自ノードもしくはその配下のノードが実行中に条件判定を行う。
条件判定の結果がfalseである場合は中断し、親ノードへ失敗を返す。 - LowerPriority
自ノードよりも右にある低優先度のノードが実行中に条件判定を行う。
条件判定の結果がtrueである場合は実行中ノードを中断し、自ノードがアクティブになる。
上記2つのフラグを組み合わせて設定できます。
また、AbortFlagsに関係なく自ノードがアクティブになる際に一度条件判定を行い、結果がfalseであればそのまま失敗として返します。
Serviceスクリプト
Serviceスクリプトはコンポジットノードとアクションノードに追加でき、ノードがアクティブの間何かしらの処理を行えるスクリプトです。
例のBehaviourTreeでは使用していませんが、
例えばプレイヤーとの距離をParameterに格納するServiceをSelectorノードに追加するなど、補助的な処理を記述するのに適しています。
Serviceスクリプトの作成についてはこちら。