Choose your operating system:
Windows
macOS
Linux
アクタ への参照を確立することで、ゲームプレイ中にその プロパティ、変数、イベント、関数 (該当する場合) に、ブループリント、C++ を介してアクセスし、ゲームプレイのニーズに合わせてこれらを変更することができます。
例えば、プレイヤーがトリガーボックスに入ったら点灯するライトが必要だとします。ライトへの参照とトリガーボックスを用意し、このライト アクタをトリガーボックスの OnComponentBeginOverlap Event (この場合にライトをオンにする) に結び付けて点灯させることができます。
アクタへの適切な参照を取得することは、アクタ間のやりとりでも重要です。参照を誤って指定するとやりとりに失敗して望ましくない結果を招くからです。
以下のステップは、アクタへの参照の 設定 および 取得 方法のサンプルです。
このサンプルでは Starter Content を有効にした新しい Blueprint Third Person Template を使用しています。
[Place Actors] パネルの [Basic (基本)] タブにある Box Trigger をレベル内にドラッグします。
これを使って、レベル内の別のアクタの移動をトリガーします。
Box Trigger の [Details (詳細)] パネル内の [Convert to Class Blueprint (Class ブループリントに変換)] を選択します。
このアクタから ブループリント を作成し、その中にリファレンス アクタを格納する変数を代入します。
ブループリントに名前を付けて [Create Blueprint (ブループリントを作成)] を選択します (ブループリント エディタ が開きます)。
ブループリント エディタの [MyBlueprint] ウィンドウで、[Add Variable (変数を追加)] ボタンをクリックします。
変数の [Details (詳細)] パネルで [Variable Type (変数の種類)] をクリックし [Object Reference (オブジェクト リファレンス)] から [Actor] を選択します。
ここで、リファレンスはレベル内の アクタ タイプと オブジェクト になるように指定します。
変数に「TargetActor」と名前を付けて、[Editable (編集可能)] にチェックを入れます。
これは、メイン エディタ ウィンドウの [Details (詳細)] ペインを使って、このブループリントの外部でのアクセスと設定を可能にする変数が Public に対して設定されたことを表します。ブループリントに戻らずに変数を修正したい場合に便利です。
変数の実行内容や用途の ツールチップ として表示させるテキストを入力することもできます。
ここで、「The Actor to Target」とテキスト入力をしておきました。
ブループリント エディタ ウィンドウの左上にある [Compile] ボタンをクリックします。
コンパイルが終わると、緑のチェックマークに変わります。
ブループリントを最小化してメイン ウィンドウに戻ったら、レベル内の Box Trigger ブループリントを選びます。
ウィンドウの [Details (詳細)] パネルの デフォルト の中に ターゲット アクタ とツールチップがあるはずです。
コンテンツ ブラウザ から Content/StarterContent/Shapes の下のレベルに Shape_Cubes を 3 つ追加します。
独自のプロジェクトを使っている場合は、好きなアクタ、スタティックメッシュ、あるいはブループリントをレベルに追加することができます。
レベルに追加するものに関係なく、それぞれのアクタの [Details (詳細)] パネルで可動性を [Moveable (ムーバブル)] に設定できます。
これにより、アクタをブループリント スクリプトで動かすことができるようになります。
レベル内の [Box Trigger] をクリックします。
[Details (詳細)] パネルの [Target Actor (ターゲット アクタ)] の下にある [None] ボックスをクリックし、「Shape 」(または追加したアクタの名前) を検索します。
[None] をクリックするとレベル内にあるすべてのアクタが表示されますが、ここでは追加したキューブの 1 つをターゲットにしていきます。
虫眼鏡アイコンの横にあるスポイトツール アイコンをクリックします。
ビューポートでアクタをクリックすると、レベルからアクタをターゲット アクタとして選択できるようになります。
スポイトツール アイコンをいずれかのキューブ (または追加したアセット) に合わせ、クリックしてターゲット アクタにします。
アクタを選ぶと、Target Actor 変数が [Details (詳細)] パネルで選択されたアクタに更新されます。
ここで、ターゲット アクタになるアクタにリファレンスを 設定 します。
Box Trigger ブループリントを開き、[MyBlueprint] ウィンドウの中の目のアイコンをクリックして [Show Inherited Variables (継承した変数を表示)] を有効にします。
トリガーボックスを Class ブループリントに最初に変換した時に継承したコンポーネントにイベントを追加できるようになります。
[Trigger Base] の [CollisionComponent] をクリックして [Add Event (イベントを追加)] から [Add OnComponentBeginOverlap] を選びます。
これにより、グラフ上に Event ノードが新規に作成されます。
Control キーを押しながら TargetActor 変数をグラフ内にドラッグします。
レベル内のアクタに設定した変数に代入した値を取得する Get ノードが作成されます。
TargetActor ノードを引き出して、Add Actor Local Offset ノードを探して追加します。
現在のターゲットの変形への追加が可能になります (現在位置からの移動が可能になります)。
ノードを以下のように接続し、Add Actor Local Offset ノードの Z 値を 500.0 に設定します。
ターゲットの現在位置を取得し、トリガーボックスがオーバーラップすると Z 軸に沿って上方に 500 ユニット移動します。
[Components] ウィンドウで、TriggerBox_Blueprint コンポーネントをクリックして選択します。
[Component] ウィンドウが表示されない場合は[Window] メニュー オプションから有効にすることができます。
トリガーボックスの [Details (詳細)] パネルの [Rendering] の下にある [Actor Hidden In Game (インゲームでアクタを非表示にする)] オプションのチェックを外します。
プレイヤーと一緒に入る場所が分かるように、トリガーボックスをインゲームで表示します。
[Compile] と [Save] をクリックし、ブループリントを閉じます。
メイン ツールバーから [Play] アイコンをクリックしてエディタで再生します。
トリガーボックスに入ると、選択中のアクタは 500 ユニット上方へ移動しているはずです。トリガーボックスに入るたびに、ボックスは 500 ユニットずつ上方へ移動します。リファレンスをつくることで、変数はトリガーボックス スクリプトで影響を受けるアクタがどれか分かります。このスクリプトを使って、レベル内の別のアクタに影響を与えてみましょう。
メイン エディタ ウィンドウのレベル ビューポートにある Box Trigger ブループリントをクリックします。
[Box Trigger] の [Details (詳細)] パネルの [Target Actor (ターゲット アクタ)] の隣にあるスポイト ツールをクリックします。
レベル ビューポートで、まだ使っていない別のアクタをクリックします。
再びエディタで再生します。
トリガーボックスに入るたびに、今度は選択中の新しいアクタが Z 軸に沿って 500 単位上方へ移動しているはずです。Box Trigger スクリプトで Target Actor 変数を使うことで、スクリプトに関連づいている特定のアクタに縛られずに変更でき、ブループリント自体を変更することなくアクタに影響を与えることができます。
この例では、あるオブジェクトを移動させる代わりに、様々なオブジェクトを移動させる方法を説明しましたが、この方法は、プレイヤーがボタンを押した時にドアを開け、様々なライトをオンオフし、プレイヤーが所持あるいは破壊するアイテムをスポーンしたり、様々なことに使用できます。
これは、アクタにリファレンスをつけるほんの 1 つの方法にすぎません。例えば、メイン エディタ ウィンドウからではきちんと設定できないプレイヤー キャラクターにレファレンスを付けるには、別の方法があります (以下の Related Links セクションをご覧ください)。