Language:
Page Info
Engine Version:

13. デコレーターの作成

ビヘイビアツリー システムの条件式としても知られる Decorator (デコレーター)Composite ノードまたは Task ノードのいずれかにアタッチされ、ツリーのブランチあるいはノード 1 つを実行可能かどうかの判断をするノードです。

AI のポーンがターゲットに十分近づくと、デコレーター はビヘイビアツリーの Rapid Move To ブランチの実行を中止します。これは Rapid Move To タスクで、あるいは Move To タスクを使って処理することができますが、この Decorator はすべてのアクタを受け取り、任意のブランチの実行をブロックすることができます。従って、様々な状況での再利用が可能になります。

ステップ

  1. コンテンツ ブラウザ で FollowerBT Behavior Tree を ダブルクリック して開きます。

  2. [New Decorator (新規デコレーター)] ボタンをクリックします。

    ビヘイビアツリーと同じフォルダ内に作成されます。

  3. コンテンツ ブラウザ 内で名前を「CloseEnough」に変更します。

  4. 編集のためにエディタで既に開いているはずですが、そうでない場合は コンテンツ ブラウザダブルクリック してください。

  5. [My Blueprint] タブの [Functions (関数)] セクションで、 PerformConditionCheck を "Override" します。

    override_button.png

  6. 新しくできた関数で、次のグラフを作成します。

    Copy Example

    画像をクリックして拡大、または こちら をクリックしてウィンドウ内で開きます。

    variables.png

    このブループリントの変数名、型、値です。

    変数名

    AI_CON_Ref

    Follower_AI_CON_C

    None

    AcceptableDistance

    Float

    0.0 - ただしこの変数には True に設定している「編集可能な」フラグがあるので、ビヘイビアツリー上でインスタンス毎に変更することができます。

    TargetToFollow

    BlackboardKeySelector

    None - ただしこの変数には True に設定している「編集可能な」フラグがあるので、ビヘイビアツリー上でインスタンス毎に変更することができます。

    これは関数グラフなので、上の画像のグラフから Code Snippet を使った場合、グラフの中央部分しか取得できず、開始と終了のノードは接続されません。画像の通りにこれらを接続すれば、正常に機能します。

  7. イベント Receive Condition Check は、ビヘイビアツリーがこの条件のノードにヒットした時にこのブループリントへ送られるイベントです。

  8. 再度、 AI Controller を格納して、後で簡単に参照できるようにしておきます。

  9. フォローしたいアクタを取得します (プレイヤー ポーン)。

  10. アクタと AI ポーン間の距離を取得します。

  11. 距離が設定可能な値より大きい場合は、条件は True を返します。そうでない場合は False を返し、それがあるビヘイビアツリー部の実行をブロックします。

これにより、ビヘイビアツリーが絶えず RapidMoveTo へ循環して再び戻ることがなくなります。基本的に、プレイヤーに追いついたら停止します。