Language:
Page Info
Engine Version:

ブループリントでキャストする

ブループリントCast To ノードは、簡単に言うと、キャスト元のオブジェクトがキャスト先の特定のオブジェクトであるかを確認する時に使用します。つまり、その中に変数または他のカスタム機能を持つ特殊な Character ブループリント (例えば、MyCharacter と呼ばれるもの) を作成し、それをデフォルトの Pawn クラス (またはすべてのプレイヤー キャラクターがデフォルトで使用する Character ブループリント) として割り当てたとします。

プレイヤー キャラクターのプロパティに別のブループリントからアクセスするには、Get Player Character ノードを使って一般的な方法 (位置、回転などを設定/取得するなど) でプレイヤー キャラクターに影響を及ぼすことができます。しかし、MyCharacter ブループリントに追加設定したカスタム機能にはアクセスできません。プレイヤー キャラクターを get していても、特定のタイプのキャラクター タイプは get していないからです。

Get Player Character ノードを使用し、次に Cast To MyCharacter ノード (特殊な Character ブループリント) を使用すると、プレイヤー キャラクターは MyCharacter であり、ブループリント内の変数、関数、イベント、その他の特殊な機能にアクセスしたい旨を示すことができます。

このページでは、キャスティングの使用例について学習します。Cast To node の使用例、ターゲット ブループリントのキャスティングや他のタイプのキャスティングについても説明します。

使用例

以下は ブループリントキャスト の使用例です。

  • 別のブループリントの特別なバージョンにアクセスしたい場合。

    • キャラクターが炎の中を歩くとヘルス値を激減させる場合。

      • 特定の Character ブループリントをキャストしてヘルス値にアクセスし変更する場合。

    • キャラクターが死亡し、リスポーンする必要がある場合。

      • 特定の Game Mode ブループリントをキャストして、リスポーン スクリプトを実行する場合。

  • 同じクラスの複数のブループリントにアクセスして同じ方法で全部変更したい場合。

    • レベルにいくつか照明があり、イベント発生時に一斉に点灯、消灯したい場合。

      • Light ブループリントにキャストして、消灯する機能を実行する場合。

  • 特定の子ブループリントにアクセスしたい場合。

    • Animal ブループリント (Cat、Dog、Bird など) がベースのブループリントが複数あり、そのひとつにアクセスしたい場合。

      • それぞれのブループリントと固有の機能にアクセスするために Cast to Cat、Cast to Dog、Cast to Bird を使いたい場合。

Cast To ノードの使用例

以下は、Cast To ノードを使用してあるブループリント内から別のブループリントにアクセス可能な方法の例です。

この例では、レベルに炎のエフェクトのブループリント (アクタ) があり、プレイヤーが使用しているプレイ可能な Character ブループリント と通信させたいとします。プレイヤーが炎に入ると、その旨とダメージを受けるべきであるという信号を Character ブループリント に送るようにします。OverlapEvent の Return Value を使用して、Character ブループリントに Cast To し、その中のイベント、関数、変数にアクセスできます。

3_0a.png

  • 上記の炎は Blueprint_Effect_Fire アセットです (スターター コンテンツにあります)。

  • Trigger という球体コンポーネントがブループリントに追加され、コリジョンは OverlapOnlyPawn に設定されています。

Blueprint Casting を使用して以下を行います。

  1. Default Pawn Class (プレイ可能なキャラクター) に割り当てられた Character Blueprint は、アクセスする Target Blueprint です。

    3_0b.png

    [Default Pawn Class] は、[Edit (編集)] メニューの [Project Settings (プロジェクト設定)][Maps & Modes] セクションにあります。

  2. ターゲットが MyCharacter ブループリントであるとわかっているため、その中でプレイヤーが Is on Fire であるかを示す Bool 変数を作成できます。

    3_0c.png

    上の画面では Event TickBranch に送られ、True ならば Apply Damage を画面にプリントします (True からは、ダメージスクリプトを適用するであろう場所)

  3. Blueprint_Effect_Fire ブループリント内で、Trigger に対して 2 つのイベントを追加します。OnComponentBeginOverlapOnComponentEndOverlap です。

    3_1.png

  4. イベントを追加した状態で、Other Actor ピンをドラッグして、検索フィールドに Cast To My と入力します。

    3_2.png

    イベントをトリガーするアクタ (MyCharacter Blueprint) をチェック/割り当てし、それに Cast To し、炎のブループリント内でアクセスできるようにします。

  5. Cast To MyCharacter オプションを選択します。

  6. ノードを追加した状態で、As My Character C ピンをドラッグして、その中のイベント、変数、関数などにアクセスできます (この場合は、Set Is on Fire)。

    3_3.png

  7. Blueprint_Effect_Fire ブループリントにある両方のイベントは以下のようになります。

    3_4.png

    炎がオーバーラップする場合、MyCharacter ブループリントの IsOnFire 変数を True に設定します。オーバーラップしない場合は、False に設定します。 MyCharacter ブループリント内で、IsOnFire が炎のブループリントで True に設定されている場合、Apply Damage を画面にプリントします (または、ヘルス/ダメージ システムを作成した場合は、ダメージを適用し、ここでプレイヤーのヘルス値を減らすことができます)。

ターゲット ブループリントのキャスティング

変数を使用して、アクセスするために特殊なタイプのブループリントに Cast To するインスタンスもあります。

CreateCasting.png

上の画像の (1) は、Save Game Object が作成され、SaveGameObject 変数に割り当てられます。次に、その変数を使用して、MySaveGame という Save Game ブループリントに Cast To します。これは、ハイスコア、ベストラップタイムなどの保存ゲーム情報を渡す、または取り出すために使用できます。

上の画像の(2) では、Widget ブループリント が作成され、UserWidget 変数に割り当てられます。次に、この変数を使用して MyWidgetBlueprint という Widget ブループリントに Cast To します。これは、Widget ブループリントからの情報を更新または取り出すために使用できます (これはアクセスしたい HUD またはその他の UI になります)。

他のタイプのキャスティング

ブループリント の異なる分類に Cast To できる特別な関数がいくつかあります。

OtherCasting.png

以下の例を表したものが上図です。

ブループリント

説明

Character (1)

ここでは、Get Player Character ノードを使用し、MyCharacter という Character ブループリントにキャストしています。

PlayerController (2)

ここでは、Get Player Controller ノードを使用し、MyController というプレイヤー コントローラにキャストしています。

Game Mode (3)

ここでは Get Game Mode ノードを使用し、MyGame という Game Mode ブループリントにキャストしています。

Pawn (4)

ここでは Get Controlled Pawn ノードと Get Player Controller ノードを使用して、MyPawn という Pawn ブループリントにキャストしています。

HUD (5)

ここでは、Get HUD ノードと Get Player Controller ノードを使用して、MyHUD という HUD ブループリントにキャストしています。

上の各例では、As My X ノード (この場合の X はブループリントのタイプ) をドラッグすると、各ブループリントからイベント、変数、関数などにアクセスできます。

また注意すべき点として、Get Player Character ノードと Get Player Controller ノードにある Player Index 値を使用して、マルチプレイヤー シナリオで様々なプレイヤーを指定することができます。シングル プレイヤーのシナリオでは、こうした値を 0 のままにします。