41. ブループリントクラス(カスタムイベント)

目的

ここまではブループリントクラスを使用して,ゲームをプレイすると周期的に動き続けるインスタンスを生成した.ここでは,何かイベントが発生したときにインスタンスの振る舞いが変わるイベント処理を行う.また,イベント処理をする際に必要となるブループリントクラスのカスタムイベントの使い方を学ぶ.

説明

ここでは,上下に往復する球のクラスから作られたインスタンスMovableSphereに対して,Aキーが押されたときにMovableSphereが動くという例を通し,ブループリントクラスを使用したイベント処理の方法を説明する.

ブループリントクラスのイベントグラフを作る

球のブループリントクラスを作り,ゲームをプレイすると,球がムーバブルになり,初期位置を取得するイベントグラフを作る.

ブループリントクラスのイベントグラフでカスタムイベントを作る

あるイベントが発生したときに球を動かすには,カスタムイベントを使用する.カスタムイベントの作り方は以下の通りである.

  • ブループリントエディタのイベントグラフを開く.
  • イベントグラフの空白領域をマウスで右クリックし,検索窓に「custom event」と入力し,「カスタムイベントを追加…」をクリックする.
  • カスタムイベント名(ここではMoveとする)を入力する.
  • Moveという名前のカスタムインベントノードができる.

カスタムイベントMoveが呼び出されたときに球が上下に往復するイベントグラフを作成する.

インスタンスを作る

作成したブループリントクラスのインスタンスMovableSphereを作る.

レベルブループリントのイベントグラフを作る

Aキーが押されたときにMovableSphereが往復するようにするには,MovableSphereのカスタムイベントMoveを呼び出して実行すればよい.MovableSphereのカスタムイベントであるMoveノードの作り方は以下の通りである.

  • レベルブループリントのイベントグラフタブを開く.
  • MovableSphereのリファレンスを作る.
  • MovableSphereの変数出力ピンからマウス左ドラッグでコネクタを延ばし,イベントグラフの空白部分でドラッグを終了する.
  • 「状況に合わせた表示」にチェックをつけ,検索窓で「Move」と入力し,Moveノードを作る.

Aキーが押されたときにMovableSphereが往復するイベントグラフは以下のようになる.

課題で使用するノード

ドアをスライドさせるときなどには,階層構造でアクタを表現し,親のアクタからの相対位置で位置を変更するとよい.具体的には,以下のようにすると,見た目を設定してないアクタを親,ドアのアクタを子とすることができる.

  • スタティックメッシュアクタを拡張したブループリントクラスを作り,見た目を設定しない.
  • スタティックメッシュコンポーネントを追加し,見た目をドアにする.

相対位置を取得し,相対位置を設定するには以下のノードを使用すればよい.

  • GetRelativeLocationノード
    • ターゲット変数入力ピンにつないだアクタの(親のアクタからの)相対位置を取得する.
  • SetRelativeLocationノード
    • ターゲット変数入力ピンにつないだアクタの(親のアクタからの)相対位置を指定する.

課題

以下の新規ブループリントプロジェクトを作り,課題を行え.

  • ファーストパーソン
  • デスクトップ/コンソール
  • ハイエンド
  • スターターコンテンツ有り

設計図

課題0

設計図の通りに壁と床と部屋を作れ.

課題1

全ての部屋にテーブルと椅子とポイントライトを配置せよ.

課題2

部屋Aに入るとテーブルと椅子が上下に動くようにせよ.

課題3

部屋Bに入るとテーブルと椅子が前後左右に傾くようにせよ.

課題4

部屋Cに入ると椅子が前後に傾き,部屋から出ると椅子が左右に傾き,椅子に近づくと上下に動くようにせよ.

課題5

部屋Dに入ると椅子の上に炎が現れ,上下に往復し,部屋から出ると消えるようにせよ.

課題6

部屋Eに入ると四隅のスタンドランプが点き,スタンドランプに近づくと明るく,遠ざかると暗くなり,部屋から出ると消えるようにせよ.

課題7

部屋Fに出入りしようとすると扉がスライドして開き,部屋に出入りすると閉まるようにせよ.

課題8

部屋Gに出入りしようとすると扉が左右にスライドして開き,部屋に出入りすると閉まるようにせよ.

課題9

部屋Hに出入りしようとするとドアが開き,部屋に出入りすると閉まるようにせよ.