Language:
Page Info
Engine Version:

14.ビヘイビアツリーのビルド

ビヘイビアツリーのビルドに必要な構成要素が全てそろいました。

DoneBehaviorTree.jpg

何が起こっているのかを詳しく見てみましょう。

  • AI Character ではないポーンが検出されなければ、AI はただじっとしている。

  • AgroCheck Service は常に適切なターゲットを探している。

  • ターゲットが見つかると、一番左のブランチがオープンになり、AI はターゲットにしたポーンに向かって走る。

  • ポーンの範囲に到達すると、ブランチの実行が妨げられるので、グラフの一番上に戻る。

  • ターゲットのポーンが隠れている場合、一番右のブランチが実行可能になるので、AI がターゲットのポーンが最後にいた位置へ移動する。

  • 移動したら、待って、ホームに戻る。

  • どんな時にも、適切なターゲットが見つかると、一番右のブランチの実行が中止され、一番左のブランチがオープンになります。

このツリーを手順に従い作成してみましょう。

ステップ

基本設定

このガイドのパート 8 で既に行ったと思いますが、この変更を保存していない場合のために、ビヘイビアツリーの基本的構造の作成手順を紹介します。

  1. ビヘイビアツリーが編集用に開いていない場合は、 コンテンツ ブラウザダブルクリック して開きます。

  2. Behavior Tree モードに切り替えます。

    btMode.png

  3. ビヘイビアツリーを初めて編集する場合は、Root ノードしか付いていません。

    root.png

  4. グラフ エディタで 右クリック するとノードを作成できます。

    1. Composites から Sequence ノードを追加します。

      sequence.jpg

    2. Composites から 2 つめ (2) の Selector ノードを追加します。

      selector.jpg

  5. Selector ノードの 1 つに Root ノードを接続します。

    connectNodes.jpg

  6. 新しく接続された Sequence ノードを Selector ノードとその他の Sequence ノードに接続します。そして以下のようにします。

    connectNodes2.jpg

    左側が 2 つ目の Selector ノード、右側が Sequence ノードです。

サービスを追加

  1. 1 番上の Selector ノードを 右クリック し、コンテキストメニューから Services -> Agro Check ノードを追加します。

    addAgro.png

  2. Selector ノードの [Agro Check] ボックスを選択し、 [Details (詳細)] パネルを使って [Target to Follow] プロパティを「TargetToFollow」に、 Target Location (ターゲットの位置)[TargetLocation] に設定し、 Interval (インターバル) を 「0.5」、 Random Deviation (ランダムな偏差) を 「0.0」に調整します。

    setAgroCheck1.jpg

タスクを追加

  1. グラフ内で 右クリック してコンテキスト メニューを表示させ、以下の 4 つの タスク を追加します。Rapid Move To ノードが 1 つ、 Wait ノードが 1 つ、 Move To ノードが 2 つ。

    addTaskNodes.png

  2. 下側の Selector ノードを Rapid Move To ノードに接続します。

  3. Sequence ノードを Move To ノード、そして Wait ノードへ接続します。

  4. ノードを以下のように調整します。

    connectedTasks.png

    左から右に以下のようになります。Rapid Move ToMove ToWaitMove To.

  5. 一番左にある Move To ノードを選び、 [Details (詳細)] パネルを使って、 Blackboard Key プロパティを [TargetLocation] に設定します。

  6. 一番右にある Move To ノードの Blackboard Key プロパティを [HomeLocation] に設定します。

    adjustMoveTo.jpg

  7. Wait ノードを選択し、 [Details (詳細)] パネルを使って Wait Time プロパティを 2.5 に設定します。

    adjustWait.jpg

  8. RapidMoveTo ノードを選択し、 [Details (詳細)] パネルを使って Target to Follow プロパティを [TargetToFollow] に設定します。

デコレーターを追加する

  1. 下側の Selector ノードを 右クリック して、 [Add Decorators..(デコレータを追加)] -> [Blackboard] を選択します。

  2. 下側の Selector ノードを 右クリック して、 [Add Decorators..(デコレータを追加)] -> [Close Enough] を選択します。

    addDecorator1.jpg

  3. Blackboard デコレーター上の Observer Aborts プロパティを [Both] に、 Key Query[Is Set] に、 Blackboard Key[TargetToFollow] に設定します。

  4. Close Enough デコレーターの Acceptable Distance プロパティを [100.0] に、 Target to Follow プロパティを [TargetToFollow] に設定します。

    setBB1.jpg

  5. Sequence ノードを 右クリック して、 [Add Decorators..(デコレータを追加)] -> [Blackboard] を選択します。

  6. Sequence ノードを 右クリック して、 [Add Decorators..(デコレータを追加)] -> [Is At Location] を選択します。

  7. Sequence ノードを 右クリック して、 [Add Decorators..(デコレータを追加)] -> [Blackboard] を選択します。

    上記のデコレーターをすべて追加すると、ノードブロック全体はこのようになります。

    addToSeqNode.png

  8. 最初の Blackboard デコレーターで、 Key Query[Is Not Set] に、 Blackboard Key[TargetToFollow] に設定します。

  9. 2 つ目の Blackboard デコレーターで、 Key Query[Is Set] に、 Blackboard Key[TargetLocation] に設定します。

  10. Is At Location デコレーターで、 Inverse Condition プロパティを有効にし、 Blackboard Key[HomeLocation] に設定します。

    上記プロパティを設定すると、ノードブロック全体はこのようになります。

    propsSet.png

これで終わりです!Play in Editor の使用中は ビヘイビアツリー エディタを開いたままにしておけば、ツリーがどのように動くのかを確認することができます。AI に十分近寄って、その視界に入ると、 AI が追跡を開始します。視界から消えると、 AI は最後に目撃した位置に行って、待機してから、開始した場所に戻ります。