アクタ リファレンスの設定と取得

アクタ リファレンスを使って、様々なアクタをレベル内で移動させる

Choose your operating system:

Windows

macOS

Linux

アクタ への参照を確立することで、ゲームプレイ中にその プロパティ変数イベント関数 (該当する場合) に、ブループリント、C++ を介してアクセスし、ゲームプレイのニーズに合わせてこれらを変更することができます。

例えば、プレイヤーがトリガーボックスに入ったら点灯するライトが必要だとします。ライトへの参照とトリガーボックスを用意し、このライト アクタをトリガーボックスの OnComponentBeginOverlap Event (この場合にライトをオンにする) に結び付けて点灯させることができます。

アクタへの適切な参照を取得することは、アクタ間のやりとりでも重要です。参照を誤って指定するとやりとりに失敗して望ましくない結果を招くからです。

以下のステップは、アクタへの参照の 設定 および 取得 方法のサンプルです。

このサンプルでは Starter Content を有効にした新しい Blueprint Third Person Template を使用しています。

  1. [Place Actors] パネルの [Basic (基本)] タブにある Box Trigger をレベル内にドラッグします。

    1AddTriggerBox.png

    これを使って、レベル内の別のアクタの移動をトリガーします。

  2. Box Trigger[Details (詳細)] パネル内の [Convert to Class Blueprint (Class ブループリントに変換)] を選択します。

    2ReplaceWithBlueprint.png

    このアクタから ブループリント を作成し、その中にリファレンス アクタを格納する変数を代入します。

  3. ブループリントに名前を付けて [Create Blueprint (ブループリントを作成)] を選択します (ブループリント エディタ が開きます)。

  4. ブループリント エディタの [MyBlueprint] ウィンドウで、[Add Variable (変数を追加)] ボタンをクリックします。

    3AddVariable.png

  5. 変数の [Details (詳細)] パネルで [Variable Type (変数の種類)] をクリックし [Object Reference (オブジェクト リファレンス)] から [Actor] を選択します。

    4VariableType.png

    ここで、リファレンスはレベル内の アクタ タイプと オブジェクト になるように指定します。

  6. 変数に「TargetActor」と名前を付けて、[Editable (編集可能)] にチェックを入れます。

    5NameVariable.png

    これは、メイン エディタ ウィンドウの [Details (詳細)] ペインを使って、このブループリントの外部でのアクセスと設定を可能にする変数が Public に対して設定されたことを表します。ブループリントに戻らずに変数を修正したい場合に便利です。

  7. 変数の実行内容や用途の ツールチップ として表示させるテキストを入力することもできます。

    7ToolTip.png

    ここで、「The Actor to Target」とテキスト入力をしておきました。

  8. ブループリント エディタ ウィンドウの左上にある [Compile] ボタンをクリックします。

    20Compile.png

    コンパイルが終わると、緑のチェックマークに変わります。

    21Complete.png

  9. ブループリントを最小化してメイン ウィンドウに戻ったら、レベル内の Box Trigger ブループリントを選びます。

  10. ウィンドウの [Details (詳細)] パネルの デフォルト の中に ターゲット アクタ とツールチップがあるはずです。

    8DetailsPanel.png

  11. コンテンツ ブラウザ から Content/StarterContent/Shapes の下のレベルに Shape_Cubes を 3 つ追加します。

    9AddingAnActor.png

    独自のプロジェクトを使っている場合は、好きなアクタ、スタティックメッシュ、あるいはブループリントをレベルに追加することができます。

  12. レベルに追加するものに関係なく、それぞれのアクタの [Details (詳細)] パネルで可動性を [Moveable (ムーバブル)] に設定できます。

    22Moveable.png

    これにより、アクタをブループリント スクリプトで動かすことができるようになります。

  13. レベル内の [Box Trigger] をクリックします。

  14. [Details (詳細)] パネルの [Target Actor (ターゲット アクタ)] の下にある [None] ボックスをクリックし、「Shape 」(または追加したアクタの名前) を検索します。

    10DropDownSelection.png

    [None] をクリックするとレベル内にあるすべてのアクタが表示されますが、ここでは追加したキューブの 1 つをターゲットにしていきます。

  15. 虫眼鏡アイコンの横にあるスポイトツール アイコンをクリックします。

    11PickActor.png

    ビューポートでアクタをクリックすると、レベルからアクタをターゲット アクタとして選択できるようになります。

  16. スポイトツール アイコンをいずれかのキューブ (または追加したアセット) に合わせ、クリックしてターゲット アクタにします。

    11ActorSelected.png

  17. アクタを選ぶと、Target Actor 変数が [Details (詳細)] パネルで選択されたアクタに更新されます。

    13ActorSelected.png

    ここで、ターゲット アクタになるアクタにリファレンスを 設定 します。

  18. Box Trigger ブループリントを開き、[MyBlueprint] ウィンドウの中の目のアイコンをクリックして [Show Inherited Variables (継承した変数を表示)] を有効にします。

    showVariables.png

    トリガーボックスを Class ブループリントに最初に変換した時に継承したコンポーネントにイベントを追加できるようになります。

  19. [Trigger Base][CollisionComponent] をクリックして [Add Event (イベントを追加)] から [Add OnComponentBeginOverlap] を選びます。

    14AddOverlap.png

    これにより、グラフ上に Event ノードが新規に作成されます。

  20. Control キーを押しながら TargetActor 変数をグラフ内にドラッグします。

    15GetActorReference.png

    レベル内のアクタに設定した変数に代入した値を取得する Get ノードが作成されます。

  21. TargetActor ノードを引き出して、Add Actor Local Offset ノードを探して追加します。

    16AddOffSet.png

    現在のターゲットの変形への追加が可能になります (現在位置からの移動が可能になります)。

  22. ノードを以下のように接続し、Add Actor Local Offset ノードの Z 値を 500.0 に設定します。

    17AddZValue.png

    ターゲットの現在位置を取得し、トリガーボックスがオーバーラップすると Z 軸に沿って上方に 500 ユニット移動します。

  23. [Components] ウィンドウで、TriggerBox_Blueprint コンポーネントをクリックして選択します。

    selectTriggerBox.png

    [Component] ウィンドウが表示されない場合は[Window] メニュー オプションから有効にすることができます。

    enableComponentWindow.png

  24. トリガーボックスの [Details (詳細)] パネルの [Rendering] の下にある [Actor Hidden In Game (インゲームでアクタを非表示にする)] オプションのチェックを外します。

    19ActorHiddenInGame.png

    プレイヤーと一緒に入る場所が分かるように、トリガーボックスをインゲームで表示します。

  25. [Compile][Save] をクリックし、ブループリントを閉じます。

  26. メイン ツールバーから [Play] アイコンをクリックしてエディタで再生します。

トリガーボックスに入ると、選択中のアクタは 500 ユニット上方へ移動しているはずです。トリガーボックスに入るたびに、ボックスは 500 ユニットずつ上方へ移動します。リファレンスをつくることで、変数はトリガーボックス スクリプトで影響を受けるアクタがどれか分かります。このスクリプトを使って、レベル内の別のアクタに影響を与えてみましょう。

  1. メイン エディタ ウィンドウのレベル ビューポートにある Box Trigger ブループリントをクリックします。

  2. [Box Trigger][Details (詳細)] パネルの [Target Actor (ターゲット アクタ)] の隣にあるスポイト ツールをクリックします。

    11PickActor.png

  3. レベル ビューポートで、まだ使っていない別のアクタをクリックします。

  4. 再びエディタで再生します。

トリガーボックスに入るたびに、今度は選択中の新しいアクタが Z 軸に沿って 500 単位上方へ移動しているはずです。Box Trigger スクリプトで Target Actor 変数を使うことで、スクリプトに関連づいている特定のアクタに縛られずに変更でき、ブループリント自体を変更することなくアクタに影響を与えることができます。

この例では、あるオブジェクトを移動させる代わりに、様々なオブジェクトを移動させる方法を説明しましたが、この方法は、プレイヤーがボタンを押した時にドアを開け、様々なライトをオンオフし、プレイヤーが所持あるいは破壊するアイテムをスポーンしたり、様々なことに使用できます。

これは、アクタにリファレンスをつけるほんの 1 つの方法にすぎません。例えば、メイン エディタ ウィンドウからではきちんと設定できないプレイヤー キャラクターにレファレンスを付けるには、別の方法があります (以下の Related Links セクションをご覧ください)。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル