はじめに
動く床を作成するための手順を紹介します。この記事を読むことで、Blueprintを使用して、プレイヤーが乗った時に移動する床を実装できます。
※この記事ではUE5.3.2を使用しています。
今回は、このような処理を作ります。
プレイヤーが乗った時に移動する床を作る方法
Blueprintを作成
コンテンツ内で右クリックして「新規フォルダ」を選択。もしくは、「 Ctrl + Shift + N 」のショートカットキーでフォルダを作成します。
フォルダ名は「MovingFloor」にしました。
「MovingFloor」内で右クリックして「ブループリントクラス」を選択、「 Actor 」をクリックします。
Acorの名前を「 BP_MovingFloor 」にします。
「 BP_MovingFloor 」をダブルクリックして、ブループリントの編集画面を表示します。
「ビューポート」を選択、「 + 追加」のキューブを追加します。
名前を「 SM_MovingFloor 」に変更します。
拡大・縮小のZの値を「 0.25 」にします。
移動の処理を追加
「 + 追加」、検索で「move」を入力して「 InterpToMovement」を追加します。この「InterpToMovement」を使用して床を動かしていきます。
「InterpToMovement」を選択した状態で右側の「制御」項目の「 Duration 」を「3」にします。「 Duration 」は、所要時間の値になります。
次に移動位置を設定するために、「 Control Points 」項目の「+」を 2 回押してインデックスを 2 つ追加します。
インデックス [ 0 ] は始まりの位置、インデックス [ 1 ] は終わりの位置を設定します。
「Position Control Point」に X、Y、Z 方向の位置を設定します。横に移動させる為に Y を 「 500 」にします。
次に「ビヘイビア」の項目の「 Behaviour Type 」を「One Shot」に設定します。「One Shot」は、終点で停止する設定です。
プレイヤーが乗るまで動かないようにしたいので「 Auto Activate 」のチェックを外します。これでゲーム起動時は停止します。
当たり判定の作成
「 + 追加」、検索で「box」を入力して「 Box Collision 」を追加します。
拡大・縮小:「 1.5 」、「 1.5 」、「 0.4 」にします。
「Box Collision」は衝突の判定を行うので、床のアクタの大きさに合わせます。
パースペクティブをクリックすると上下左右などの画面を変更できます。位置の調節に便利です。
「 Box 」を選択した状態で、右の詳細欄の「 On Component Begin Overlap 」の「 + 」ボタンを押してください。
「イベントグラフ」に切り替わり、ブループリントのノードが追加されます。
「 On Component Begin Overlap 」は、何かが重なった時に、実行される処理です。
この場合は、( Box )となっているので「 Box 」に何かが重なった時に実行されます。
「Branch」ノードを追加します。
「Branch」ノードは、プログラミングでいう「if文」に相当する基本的な分岐ノードです。条件に応じて処理を「True」または「False」に分岐させることができます。
何もない所で右クリック、「 Get Player Character 」を追加します。これでプレイヤーを取得できます。
「Other Actor」から「Equal」を追加します。以下のように繋ぐと、プレイヤーが重なった場合という条件を作ることができます。
「 True (プレイヤーが重なった場合)」 から「 Set Active ( InterpToMovement ) 」を追加します。
「 New Active 」にチェックを入れます。
全体を選択して C を押すと、選択した範囲でコメントを書くことができます。
コメント名は「Moving floor treatment(動く床の処理)」にしました。
この処理は、プレイヤーが「 Box 」に重なった時、「 SM_MovingFloor 」が目的地まで移動して停止します。最後にコンパイルと保存をします。
それでは、レベルにアクタを配置してみましょう。
拡大・縮小を「 3.0:3.0:1.0 」にします。
完成動画がこちらです。
まとめ
この記事では、Blueprintを作成、床板のアクタを配置、移動処理を追加する方法を解説しました。これで当たり判定で動く床を実装できます。
次のページ >> 【UE5】回転する床の作り方
書籍で学びたい方はこちら >> UE5 おすすめ本 3選!初心者必見!
コメント