Page 1 of 1

プロパティのAgent Controllerについて

Posted: 2023/01/26 06:51
by AGame2
Image

Re: プロパティのAgent Controllerについて

Posted: 2023/01/26 07:30
by AGame2
申し訳ございません。
途中で送信してしまいました。
各処理にあるプロパティのAgent Controllerについて質問です。

AgentMoveToTransformのAgent ControllerをSelfやRoot Graphとした場合は想定通りに動くのですが、
Parent Graphにした場合に想定通りの動作となりません。

やろうとしていることは下記の通りです。
キャラクターAにBehaviarTreeを持たせ、SubBehaviourTreeReferenceのExternalBTに
再利用可能なBehaviarTreeを持ったBオブジェクトを指定して実行しています。
Use Directly In Sceneをfalseとしているので、キャラクターAの下にBオブジェクトのコピーが作成されました。
BオブジェクトのBehaviarTreeでは、AgentMoveToTransformを使って指定場所に移動する処理を設定しています。
Selfの場合は、BオブジェクトのはAgent Controllerを持っていいないので動かないので想定通りです。
Root Graphとした場合、ルートとなるキャラクターAはAgent Controllerをもっているので動くのでこれも想定通りです。
(最初は、GameObjectのルート関係を見るものと勘違いしていました。)
しかし、Parent Graphとした場合に動きません。キャラクターAとBオブジェクトは親子関係となっているので動く想定でいたのですが、
考えられる原因がありましたらご教示願います。

補足として、BオブジェクトのBehaviarTree内は、Root→SubBehaviarTree→SubStateMachineの階層構造となっており、
実際の処理ではStateMachineでAgentMoveToTransformを呼び出す流れとなっております。

また、当初オブジェクトBはプロジェクト上のプレハブを使用する想定でしたが、
この問題を調査するためにヒエラルキー上のものをコピーさせていますが、どちらの動作にも違いはないでしょうか。

Re: プロパティのAgent Controllerについて

Posted: 2023/01/26 08:06
by caitsithware
ご利用ありがとうございます。

FlexibleGameObjectやFlexibleComponentの参照方法をHierachyにした場合はすべてグラフの親子関係での参照になっております。
  • Self : 自分自身のグラフ
  • Root Graph : 自分自身のグラフから親グラフを辿ったルートのグラフ
  • Parent Graph : 自分自身のグラフの親グラフ。
今回の場合は、BオブジェクトはBehaviourTree(ルート)→SubBehaviourTree→SubStateMachineと3階層になっているとのことなので、SubStateMachineから見た親であるSubBehaviourTreeを参照しようとします。
親となるSubBehaviourTreeも内部的にはオブジェクトBのコンポーネントとして設定されていますので、Selfと同様Agent Controllerがないので動作しないのが正常です。
AGame2 wrote: 2023/01/26 07:30 ヒエラルキー上のものをコピーさせていますが、どちらの動作にも違いはないでしょうか。
シーンに配置しているオブジェクトは実行中に変更される可能性もありますので、Instantiateされるまでに行われた変更もコピーされるという違いがあります。

Re: プロパティのAgent Controllerについて

Posted: 2023/01/26 13:38
by AGame2
ありがとうございます。
よくわかりました。

SubBehaviourTree、SubStateMachineで再利用を検討する場合、Parent Graphを選ぶのがよさそうですね。