Page 1 of 1

1キャラに設定したビヘイビアツリーを使い回せるかどうかについて

Posted: 2019/11/27 10:29
by Guest
Arbor3のビヘイビアツリーを使っていてわからないことがあったので、質問させてください。

見た目など異なるキャラクターが数十種類いて、AIとしての挙動がすべて同じ場合、一人に設定したビヘイビアツリーを使い回すことは可能なのでしょうか?
キャラクターごとにビヘイビアツリーコンポーネントを新たにアタッチする必要があるのでしょうか?
親オブジェクトにビヘイビアツリーコンポーネントをアタッチし、動的に生成される子オブジェクト(キャラ)のtransformやanimatorのパラメーターなどをビヘイビアツリーで操作するみたいなことは可能なのでしょうか?

Re: 1キャラに設定したビヘイビアツリーを使い回せるかどうかについて

Posted: 2019/11/27 11:40
by caitsithware
ご利用ありがとうございます。

BehaviourTreeの使いまわしについてですね。
ゲスト wrote: 2019/11/27 10:29 見た目など異なるキャラクターが数十種類いて、AIとしての挙動がすべて同じ場合、一人に設定したビヘイビアツリーを使い回すことは可能なのでしょうか?
Animatorなどのコンポーネントは事前に追加しておきBehaviourTreeで参照、AnimatorControllerやメッシュなどのモデル関連情報のみを置き換えるようなシンプルなケースでしたら、特にBehaviourTree側での対応なしで使いまわしができるかと思います。
(AnimatorControllerやモデル関連の置き換え方法についてはUnityの仕様によるところになりますので、こちらでの回答は致しておりません)
ゲスト wrote: 2019/11/27 10:29 キャラクターごとにビヘイビアツリーコンポーネントを新たにアタッチする必要があるのでしょうか?
いくつか方法も考えられますので、その方法によってはキャラクターごとにBehaviourTreeを追加する必要も出てくるかと思います。

例えば、キャラクターの見た目ごとにArborFSMかBehaviourTreeを持ち、SubBehaviourTreeReferenceで共通AI用BehaviourTreeを使用するケースが考えられます。
この場合、親グラフから必要なコンポーネントの参照を子グラフのParameterContainerに渡してParameter経由で参照するか、子グラフ側でのFlexibleComponentの参照タイプをHierarchyのRootGraphにするなどで参照できるようになります。
ゲスト wrote: 2019/11/27 10:29 親オブジェクトにビヘイビアツリーコンポーネントをアタッチし、動的に生成される子オブジェクト(キャラ)のtransformやanimatorのパラメーターなどをビヘイビアツリーで操作するみたいなことは可能なのでしょうか?
この場合は、事前にコンポーネントを参照させておけないため、ParameterContainerなどを介して参照を渡すためのスクリプトが別途必要になります。
キャラの見た目用の子オブジェクトを生成した直後に必要なコンポーネントをParameterに設定し、BehaviourTree側はParameter経由で参照するようにしてください。

関連リンク: また、以前2016年5月にもFSMの使いまわしについて似たような質問がありましたので、そちらもよろしければご参照ください。
FSMの他のオブジェクトへの使い回し
(古いトピックですので、その点はご注意を)

Re: 1キャラに設定したビヘイビアツリーを使い回せるかどうかについて

Posted: 2019/11/28 12:32
by Guest
ご回答ありがとうございます!
ParameterContainerとスクリプトを組み合わせて参照の問題を解決しようと思います。