11.サービスの作成

ステップ 11. サービスの作成

Windows
MacOS
Linux
On this page

ServicesComposite ノードにアタッチされ、ブランチの実行中は定義された頻度で実行されるノードです。多くの場合、確認してブラックボードを更新するために使用されます。他のビヘイビアツリー システムの通常の Parallel ノードの代わりになります。

ここでは、サービスは AI Character ではない Pawn を探して、TargetToFollow キーと TargetLocation Blackboard キーを設定します。

ステップ

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

  2. [New Service (新規サービス)] ボタンをクリックします。

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

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

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

  5. 次のグラフを作成します。

    Copy Example

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

    variables.png

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

    変数名

    DesiredObjectTypes

    EObjectTypeQuery の Array

    ひとつの要素を Pawn に設定します。

    MyLocation

    Vector 3

    0,0,0

    AI_CON_Ref

    Follower_AI_CON_C

    None

    TargetToFollow

    BlackboardKeySelector

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

    TargetLocation

    BlackboardKeySelector

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

変数 DesiredObjectTypes は、単一の要素が Pawn に設定された型 EObjectTypeQuery の配列です。手順は、まず [My Blueprint] パネルで DesiredObjectTypes 変数を選び、[Details (詳細)] パネルの Default Value カテゴリで、 plus_button.png ボタンをクリックして要素を追加します。要素のプルダウン メニューから [Pawn] を選択します。

Default Value カテゴリに何も表示されない場合は、ブループリントをコンパイルします。

このグラフでは、以下のことが行われています。

  1. Event Tick は、ビヘイビアツリーで定義されているレートでティックする以外は、アクタ内でも同様に動きます。

  2. 渡された Owner アクタ は常にビヘイビアツリーを呼び出すコントローラです。それを格納しましょう。ただしこの作業は、それを格納していない場合のみ行ってください。キャスト ノードからのオーバーヘッドを減らすためです。

  3. 制御されたポーンの位置に応じてオブジェクトに対して Multi Sphere Trace を行い、制御されたポーンを除く全てのポーンを取得します。

  4. それから、プレイヤーがヒットしているかどうかを For Each ループが調べます。

  5. ヒットしている場合、可視性トレースを行って AI ポーンがプレイヤー ポーンを見ることができるかを調べます。

  6. 見える場合、ブラックボード オブジェクト上で AI ポーンに対して適切な値を設定します (Target to Follow および Target Location)。

  7. 見えない場合、ブラックボード上で Target to Follow キーをクリアします。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback