サービス は、Composite ノードもしくは Task ノードにアタッチされ、ブランチの実行中に定義された頻度で実行されるノードです。多くの場合、ブラックボードの確認や更新に使用されます。これらは、他の Behavior Tree システムの従来の Parallel ノードに代わるものです。
Default Focus
Default Focus は、AI コントローラーのフォーカスを設定することにより、ブループリント やコード内でアクタへのショートカットを作成します。AI コントローラーのフォーカスをアクタに設定すると、Blackboard Key にアクセスせずに AI コントローラーに直接アクセスできるようになります。
| プロパティ | 説明 |
|---|---|
| Blackboard Key | GetFocusActor を使って、Actor Key (基本クラスがアクタに設定されたオブジェクト キー) が AI コントローラーからすぐに参照されるようにします。 |
| Node Name | Behavior Tree グラフで表示されるノード名です。 |
Run EQS
Run EQS Service ノードを使用すると、Environmental Query System (EQS) テンプレートを指定された間隔で定期的に実行し、指定された Blackboard Key を更新できます。
| プロパティ | 説明 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Query Template | 実行する EQS アセットです。 | ||||||||||
| Query Config | クエリに含める追加パラメータのオプションの配列です。 | ||||||||||
| EQSQuery Blackboard Key | 指定した EQS クエリ テンプレートの代わりに、EQS クエリ テンプレートを格納する Blackboard Key を使用するオプションです。 | ||||||||||
| Run Mode |
|
||||||||||
| Blackboard Key | サービスが結果を書き込む Blackboard Key (FVector または アクタ) です。 | ||||||||||
| Interval | サービスの後続のティック間の時間スパンを定義します。 | ||||||||||
| Random Deviation | ランダムな範囲の値をサービスの Interval 値に追加します。 | ||||||||||
| Call Tick on Search Start | タスクの検索でこのノードが入力されたときに、Tick イベントを呼び出します (Search Start も同様に呼び出されます)。 | ||||||||||
| Restart Timer on Each Activation | これが設定されている場合、ノードがアクティブになったときに次のティック時間は常にサービスの Interval 値にリセットされます。 | ||||||||||
| Node Name | Behavior Tree グラフで表示されるノード名です。 |
カスタム サービス
ブループリント ロジックと (または) パラメータを含むツールバーから [New Service] ボタンをクリックすることで、 サービス を作成することができます。
Blueprint サービスは、C++ サービスよりもパフォーマンスが劣ります。最適化が問題になる場合は、ネイティブ サービスの使用をお勧めします。
サービスの作成時には、以下のプロパティも使用できます。
| プロパティ | 説明 |
|---|---|
| Show Property Details | これを有効にすると、ノードのプロパティに関する詳細情報が表示されます。 |
| Show Event Details | これを有効にすると、実装されているイベントに関する詳細情報が表示されます。 |
| Node Name | Behavior Tree グラフで表示されるノード名です。 |
| Interval | サービスの後続のティック間の時間スパンを定義します。 |
| Random Deviation | ランダムな範囲の値をサービスの Interval 値に追加します。 |
| Call Tick on Search Start | タスクの検索でこのノードが入力されたときに、Tick イベントを呼び出します (Search Start も同様に呼び出されます)。 |
| Restart Timer on Each Activation | これが設定されている場合、ノードがアクティブになったときに次のティック時間は常にサービスの Interval 値にリセットされます。 |