ご使用ありがとうございます。
BehaviourTreeのAgentMoveOnWaypointで任意の地点で別のアクションを割り込みさせたい、ということですね。
BehaviourTreeでの割り込みは割り込みさせたいアクションノードやコンポジットノードにデコレータを付ける必要がありますが、
現状、AgentMoveOnWaypointの状態を見て割り込みさせる機能はございません。
案1
その代わりに、以下のような形ではいかがでしょうか。
- Waypointで行いたいアクション(もしくは親のコンポジット)ノードに割り込み用デコレータを追加。
デコレータの内容:
- Waypointに近づいたら有効になって割り込みする。
- 任意のアクションが終わったら、範囲外に出るまでDecoratorは有効にならず割り込みさせない。
(これを入れないと、次のノードに移ったタイミングで範囲内判定が入り繰り返してしまうため)
- ノードの優先順位(グラフで見ると左側が優先)は、(あれば攻撃→追跡→)任意の地点でのアクション→巡回、という感じ。
案2
あるいは、AgentMoveToTransformなどを使用して直接任意の場所に移動させてアクションを取らせる、というのも良いかもしれません。
- 任意のアクションを行いたい地点はWaypointに含まない、もしくは終着点とする。
- AgentMoveOnWaypointが終わったら、必要であれば任意のアクションを行いたい地点までAgentMoveToTransformなどで移動する。
- 任意のアクションを行う。
- 親のコンポジットノードをループさせておき、AgentMoveOnWaypointに戻る。
- ノードの優先順位は、巡回→任意のアクション(この2アクションの親にループ系のDecoratorなどを付けて繰り返しさせる)
- この方法でしたらデコレータによる複雑な割り込みもなく、グラフ構成はスッキリするかと思います。
※これら案は実際に動作検証していませんので、何か他の問題があるかもしれません。ご了承ください。
また、複雑な動作を組み込みスクリプトのみで作るのも限界があるので、スクリプトの自作もお勧めいたします。
スクリプトの自作について、詳しくはマニュアルをご覧ください。
スクリプティング | Arbor Documentation
補足:
念のための補足ですが、ビヘイビアデザイナーは他社さんのアセット名ですので、
ここではBehaviourTree(ビヘイビアツリー)という名前を憶えていただければと思います。
BehaviourTreeというのはAIなどで活用される木構造を指しており、固有のアセットを指す言葉ではないのでアセットによらずに使用できます。