はじめに
今回の記事では、床スイッチにプレイヤーが乗ることで往復移動床が表示させる処理を実装します。
※この記事ではUE5.3.2を使用しています。
※画像はクリックすると拡大表示されます。
今回は、このような処理を作ります。
往復移動床(BP_MovingFloor)の作成がまだの方は以下の記事を確認してください。
床スイッチに乗った時に移動床を表示する
Blueprintクラスとマテリアルを作成
適当な場所でブループリントを作成してください。今回は、コンテンツフォルダ内に作ります。「追加」をクリックして「ブループリントクラス」を選択、「 Actor 」をクリックします。
Acorの名前を「 BP_Button 」にします。
次にボタンを踏んだ時に、アクタの色を変えるためにマテリアルを作成します。
名前を「M_Yellow」にします。「M_Yellow」をダブルクリックしてエディタ画面を表示します。
「3を押しながら左クリック」で「Constant3Vector」を追加します。「Constant3Vector」の四角の部分をクリックすると「カラーピッカー」が表示されます。適当な色に変更して「OK」をクリックします。
「Constant3Vector」の白色のピンから「*」で検索して「Multiply」を追加します。「Multiply」は乗算するノードです。
「Multiply」の「B」を「5」にして「エミッシブカラー」を繋ぎます。これで保存をすればマテリアルの完成です。
エミッシブカラー(Emissive Color)は、3DCGやゲーム開発において重要な概念で、主にマテリアルの発光効果を表現するために使用されます。
「 BP_Button 」をダブルクリックして、ブループリントの編集画面を表示します。
「 + 追加」をクリックします。今回は「StaticMesh」を選択してみましょう。
名前を「 SM_Button 」に変更します。
「 SM_Button」を選択した状態で、左側の詳細「スタティックメッシュ」のプルダウンメニューを開きます。
プルダウンメニューからプロジェクト内のスタティックメッシュを自由に選択できます。また「None」の文字がある四角い部分にスタティックメッシュをドラッグ&ドロップすることで設定もできます。
今回は、「SM_ChamferCube」を使用します。
拡大縮小を「2.0」「2.0」「0.25」にします。
「+追加」で検索して「Box Collision」を追加します。
「Box」を選択した状態で、拡大縮小「1.5」「1.5」「2.0」、位置のZ値を「50」にします。
※以下の図のように「SM_Button」の下の階層(親子関係)に Box(Box Collision)を追加する必要があります。下の階層に無い場合「SM_Button」が移動してもBox(Box Collision)が追従しません。
下の階層(親子関係)にするには、Boxを「SM_Button」にドラッグ&ドロップするか、「SM_Button」選択した状態で「+追加」、「Box Collision」を追加すると下の階層に追加されます。
「 BP_Button 」の処理作成
「 Box」を選択して「イベントの追加」の「 On Component Begin Overlap 」を追加します。
「イベントグラフ」に切り替わり、ブループリントのノードが追加されます。
「 On Component Begin Overlap 」は、何かが重なった時に、実行される処理です。
この場合は、( Box )となっているので「 Box 」に何かが重なった時に実行されます。
「On Component Begin Overlap 」の実行ピンを伸ばして「Set Material(SM_Button)」を選択します。
「Set Material(SM_Button)」の「Material」を先ほど作成した「M_Yellow」にします。これで「SM_Button」の「Box Collision」に何かが重なった時に、マテリアルが「M_Yellow」に変化します。
ビューポートに「BP_MovingFloor」と「BP_Button」を配置します。
往復移動床(BP_MovingFloor)の作成がまだの方は以下の記事を確認してください。
レベルブループリントの処理作成1
「レベルブループリントを開く」を選択します。レベルブループリントで「BP_MovingFloor」の表示非表示の制御を実装していきます。
レベルブループリント内で右クリックをして「Event BeginPlay」を追加します。
「Event BeginPlay」の実行ピンから「Set Actor Hidden In Game」を追加します。
ビューポートに戻って、「BP_MovingFloor」を選択します。選択した状態でレベルブループリントに戻ります。
「右クリック」して「Create a Reference to BP_MovingFloor」を追加します。これでレベルブループリント内で「BP_MovingFloor」を参照できます。
以下のように繋ぎます。また「Set Actor Hidden In Game」の「New Hidden」にチェックを入れます。
「Set Actor Hidden In Game」は、アクターの表示/非表示を制御するためのノードです。「New Hidden」にチェックを入れるとアクタが非表示されます。
「Set Actor Hidden In Game」の実行ピンから「Set Actor Enable Collision」を追加します。
「Set Actor Enable Collision」の「New Actor Enable Collision」外してコリジョンを無効にします。
「Set Actor Enable Collision」は、アクター全体のコリジョン(衝突判定)を有効/無効にするノードです。
以下のように繋ぐと、ゲーム開始時に移動床を非表示にすることができます。
効果音の準備
アクタを表示した時の効果音をインポートします。今回は「DOVA-SYNDROME」からダウンロードします。ログインしなくても使用できます。
上記のURLのページの「効果音素材ダウンロードページへ」をクリックします。
次のページの以下の場所をクリックするとダウンロードできます。
UE5ではWAV形式のファイルを使用するので、「MP3」を「WAV」に変換する必要があります。
ファイル名は「Appear.wav」にしました。このファイルをUE5のコンテンツブラウザ内に、ドラッグ&ドロップして追加します。
コンテンツブラウザに必要なファイルが揃いました。
レベルブループリントの処理作成2
ビューポートで「BP_Button」を選択した状態でレベルブループリントを開きます。
レベルブループリント内で右クリックして「Add On Actor Begin Overlap」を追加します。
ビューポートで「BP_Button」を選択した状態にすることで「BP_Button」を参照でき「Add On Actor Begin Overlap」を追加できます。
「Do Once」を追加します。「Do Once」は一度だけ作動するノードです。今回は一度だけ効果音が鳴ればいいので「Do Once」を使用します。
以下のように「Do Once」→「Play Sound 2D」→「Delay」を繋ぎます。「Play Sound 2D」の「Sound」に先ほどインポートした「Appear」を適用します。
効果音がなるタイミングを合わせるために「Delay」を使用して「0.2」秒後に鳴るように調整しています。
「Delay」の実行ピンの後に以前の表示のノードとは逆の設定をしてノードを組みます。これで「BP_Button」に何かが乗ると移動床が表示されます。
以下が移動床の表示処理の完成図です。
最後に「BP_MovingFloor」のブループリントも修正します。以下のように「Do Once」→ Setの「Is at Start」を繋ぎます。
移動床が表示された時に逆方向に動作するので、最初の一回だけ「Is at Start」にチェックを入れ往復処理を正常に戻します。
完成動画がこちらです。
まとめ
この記事では、UE5で床スイッチ(BP_Button)を作成し、それを踏むと移動床(BP_MovingFloor)が表示される仕組みを実装しています。
レベルブループリントを使用して、ボタン押下時の効果音再生や移動床の表示制御を行っています。また、マテリアルの変更やコリジョンの制御など、基本的なブループリント機能も活用しています。
書籍で学びたい方はこちら >> UE5 おすすめ本 3選!初心者必見!
コメント