UE4 ガンシューティングゲームを作ろう!その5 トリガーボックス
はい!今回はある場所に行くだけでイベントを起こすことができる、トリガーボックスを使っていこうと思います。
この機能を使うと様々なことができます。
今回はこれを使って、Splineの速さを変えたり、普通に歩いている状態からSpline移動に切り替えることなどをやっていきます。(UE4 ガンシューティングゲームを作ろう!その2の作り方でつくったSplineを使いますが、全然違うことにも応用できます)
早速やっていきましょう。レベル編集画面の画面左側のモードからトリガーボックスを見つけます。トリガーと検索すると楽ですね。
好きな形を選んでください。僕はボックストリガーを使用します。
これをここに来たらイベントを起こしたいという場所に、ドラッグ&ドロップで設置します。ほかの物体と同じように場所や大きさを変えられるので調整してみましょう。(僕ははSplineの速さを変えたいのでSpline上に設置しました)
この緑色のトリガーに何かが当たったらイベントが起こせます。
このトリガーを選択したままレベルブループリントを開きます。
レベルブループリントはそのレベルでのイベントをまとめて制御することができます。ここで記述したことは基本的にほかのレベルには影響しません。
今まで使ったBPと同じような画面が出てきますね。ここで適当なところで右クリックをして、Add Event for (先ほど設置したトリガー名前)からCollisionを開き、のOn Actor Begin Overlapを出します。検索するのもいいですね。
するとこんなノードが作れます。このノードの先には何に当たったらイベントを起こすか、そしてそのイベントの内容を書いていきます。
今回は1例としてプレイヤーに当たったらSplineの速度を変えるようにします。
このようにノードをつなげます。一番右のSetノードはキャストノードの青いところから線を出して作ってください。これだけで完成です。
これはFirstPersonCharacterがトリガーと重なったとき、FirstPersonCharacterの持つ変数Speedの値を変えるというプログラムです。Splineで坂道を作って、上に上がるときはSpeedを下げるトリガーを作って、下に下がるときはSpeedを上げるトリガーを作ると、ジェットコースターみたいになって面白いので、興味がある方は作ってみるといいでしょう。
トリガーは主にこのようにアクターにキャストして使います。キャストはよく使いますし、いろいろ調べてみると面白いと思います。
ここからはゲームに一味加えていこうと思います。普段は普通に移動できるようにし、Splineのスタート位置に行くと、Spline移動に代わるようにしたいと思います。
まず普通に移動するには、マップでFirst PersonCharacterを選択し、DefaultのSplineをなしにします(クリアを選ぶとなしになります)。
こういったあるレベルに設置した特定のアクタ(ここではSpline)をゲーム内で動的に変更したい場合はレベルブループリントを使います。
今回はトリガーを使ってSpline移動に切り替えます。一番最初にSplineの始点がプレイ中でもわかるようにしてみます。
MySplineActorを開きます。コンポーネントを追加で目印になるものを追加します。僕ははStaticMeshを選びました。
StaticMeshは以下のように様々な形のものを取り扱うことができます。今回は元から用意されているSM_AssetPlatformを選びました(それっぽかったのでw)。
設置できたら位置や大きさなどを調整します。以下のようにMaterialを変えても面白そうですね!
これでSplineの始点が分かりやすくなりました。
では先ほどのようにトリガーを設置します。こんな感じでスタート位置に合わせて小さくするのがおすすめです。
先ほどのようにFirstPersonCharacterにキャストします。
先ほどSpeedの値を変えたように、Splineの値を変えます。キャストノードの青いところから線を出し、SetSplineです。
Splineの値ですが、ここではマップで設置したSplineを指定しなければなりません。なので、マップで設置したトリガーをレベルブループリントに持ってきたように、SplineもレベルBPに持ってきましょう。
このように参照にしたいSplineを選択した状態で、レベルBPを開きます。
適当な場所で右クリックし、(参照にしたいSpline名)のリファレンスを作成を選択します。
最後にこの値をSetして完成です。
これでプレイすると、普通に歩けて始点に行くとSpline移動になりようになりました!
はい!今回はこれで以上です!!今回はある場所に行くだけでイベントが起こせるようにしました。ムービーが始まったり、敵が出てきたりと応用範囲は広いと思います。ぜひ、もっと掘り下げてみてください。
まとめ
・トリガーボックスを使いました
・トリガーボックスに何かが当たるとイベントが発生するようにしました
・Splineの速さや参照を動的に変えられるようにしました
・StaticMeshを使いました
・レベルブループリントを編集しました
・マップに設置したものを直接参照にしました
※レベルブループリント(設置したトリガーによって変わります)
今回はこの記事のその2の拡張になりましたが、それ以外の応用は幅広いです。
では、今回はこの辺で!