1.3 - スポーンしたアクタ

レベルスクリプトのサンプル レベルの概要、サンプル 1.3:イベント ディスパッチャーでスポーンしたアクタ

Windows
MacOS
Linux

levelscripting_1_3.png

このサンプルでは、プレイヤーがボックス トリガーへ入ると、ピックアップ可能な 8 つのコインがスポーンされます。各コインにはプレイヤーのコイン収集時に使用するディスパッチ関数が含まれます。次の 2 枚扉を開くには、プレイヤーは 8 つのコインを収集しなくてはいけません。

レベル スクリプト

フルサイズ表示するには、右クリック し、[Save As (名前を付けて保存)] を選択します。

コインのブループリントはゲームプレイ中にスポーンされるため、ボタンのブループリントと同じ方法でレベルスクリプトから参照することはできません。さらに、スクリプトは全てのコインがいつ収集されたかを把握する必要がありますが、たくさんのイベントを使用するため混乱を招く場合もあります。そこでスポーンする各コインのディスパッチ関数を単一カスタム イベントと接続します。こうすることで、コインのブループリントの収集時にディスパッチ関数を呼び出して、カスタムイベントをトリガーすることができます。スクリプトはイベント数がスポーンされたコイン数と一致するまで、イベントが発行された回数を数えます。

複数の関数をカスタムイベントに接続することは、多くの典型的なゲームプレイ シナリオに有用です。例えば敵グループをスポーンして、その後、敵全員が消滅した時に何かをトリガーするシナリオなどです。この例は、スポーンした各敵をひとつの「OnEndPlay」event と接続します。敵が破壊される度にこのイベントが発行されます。

BP_Double_Doors イベントグラフ

クリックしてフルサイズ表示するか、または 右クリック し、[Save As (名前を付けて保存)] を選択します。

BP_Double_Doors Blueprint アクタには、幾分高度なドアの設定が含まれています。各ドアの場所、ボルト機構の回転、ボルトに使用するマテリアルなどいくつかの物を操作するために タイムライン がどのように使用されるかがわかります。このブループリントに対して作成されたカスタム イベントである Open Doors event または Close Doors event をブループリントが受け取るたびにネットワークがアクティベートします。

コインのセットアップ

この例のコインはサンプル 2.5 高度なブループリントのレベル でも使用されています。

親のセットアップ

フルサイズ表示するには、右クリック し、[Save As (名前を付けて保存)] を選択します。

親ブループリントである BP_Pickup_Parent には、ピックアップをスピンやフローさせるタイムライン アニメーションなどの基本的なピックアップ動作用のスクリプトが含まれています。 子ブループリントはこのスクリプトを全て継承しますが、集める時の追加スクリプトがあるので、各ピックアップは同じ基本機能を共有しつつ若干異なる動作をします。 親ブループリント対する更新が全ての子ブループリントに適用されるという点で便利です。

プレイヤーのポーンが Pickup Trigger Sphere コンポーネントにオーバーラップすると、OnPickedUp イベントディスパッチャー が呼び出されます。プレイヤーがそれぞれの pickup を集めて OnPickedUp が呼び出されると、異なる文字列がプリントするように、 それぞれの子 ブループリント は異なるイベントを OnPickedUp にバインドします。

フルサイズ表示するには、右クリック し、[Save As (名前を付けて保存)] を選択します。

原則として、ブループリント グラフは同じイベントの複製を含むことができないので、両方とも親スクリプトで子スクリプトがそれぞれ ReceiveBeginPlay イベントを含む場合、親スクリプトにあるイベントだけが発行されます。イベントを 右クリック し、[Add call to parent function (親関数の呼び出しを追加)] を選択すると、子スクリプト内でこの現象を回避できます。これで呼び出し時に親スクリプト内の対応するイベントをトリガーする関数が作成されます。

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