ゲーム開発備忘録

ゲームプログラマー UE4・5向けの記事を書いておりますので見ていただけるとありがたいです。

【ゼロからアンリアルエンジン5】㉕エル●ンリングな昇降機(エレベーター)を作ってみよう。=乗ったら移動する編=

目次

 

はじめに

注意

UE5Preview2の現在の情報です。

今後のアップデートによりUIや機能が変更される可能性があることをあらかじめご理解ください。

 

今回はエル●ンリングなエレベーターを作ります。

f:id:namiton:20220401131143p:plain

▲こんな感じのができます。

 

解説

①エレベーター用のブループリントの作成

コンテンツ右クリックからActorを親としたブループリントを作成。

名前をBP_Elevatorにします。

f:id:namiton:20220401110035p:plain

 

コンポーネントの追加と編集

StaticMeshコンポーネントを3つ追加します。

名前を変更しておきましょう。

f:id:namiton:20220401123237p:plain

 

すべてのスタティックメッシュを選択してSM_Cylinderに変更しましょう。

f:id:namiton:20220401110450p:plain

 

トランスフォームとマテリアルを画像のようにそれぞれ変更しておきます。

 

▼SM_Body

f:id:namiton:20220401123406p:plain

 

▼SM_Switch

f:id:namiton:20220401113615p:plain

 

▼SM_Trigger

f:id:namiton:20220401114124p:plain



また、SM_TriggerはコリジョンプリセットをOverlapAllDynamic・レンダリングのVisibleを外しておきましょう。

f:id:namiton:20220401111424p:plain


こんな感じになったらOKです。

f:id:namiton:20220401123440p:plain

 

③イベントの記述

処理される順番にロジックをまとめておきます

 

1.トリガーにプレイヤーキャラが触れる

2.スイッチが押される演出

3.床を移動させる

 

これで何とかできそうです。

 

1.トリガーにプレイヤーキャラが触れる

SM_TriggerからBeginとEndOverlapを出します。

f:id:namiton:20220401112139p:plain

触れたアクタがプレイヤーのPawnかチェックします

f:id:namiton:20220401112720p:plain

 

レベルに配置してみて実行してみましょう。

ログが呼ばれていたら成功です。

f:id:namiton:20220401112842p:plain

 

2.スイッチが押される演出

タイムラインでスイッチが沈み込む演出を作ります。

 

新規イベントPlaySwitchAnimを作成してインプットにBoolのIsPushを作成します。

f:id:namiton:20220401113311p:plain

タイムラインを作成して画像のように組みます。

f:id:namiton:20220401113511p:plain

タイムラインにはフロートトラックのLocationZを作成して、0.5秒後に1になるようにします。

f:id:namiton:20220401114541p:plain

構造体ピンを分解したLocationZに画像のように組み込みます。

f:id:namiton:20220401114930p:plain

スイッチイベントそれぞれに配置します。

f:id:namiton:20220401130631p:plain

 

押し込まれる演出が再生されたら完了です。

f:id:namiton:20220401115548p:plain

 

3.床を移動させる

セットアップがしやすいようにビルボードコンポーネントを2つ追加します。

f:id:namiton:20220401115950p:plain

名前をそれぞれStartPos・EndPosにリネームしましょう

f:id:namiton:20220401123633p:plain

実行時に非表示になるHiddenInGameにチェックがあることを確認します。

f:id:namiton:20220401120035p:plain

 

適当にスプライトのデザインと位置を変更しておきます

 

▼StartPos

f:id:namiton:20220401124156p:plain

▼EndPos

f:id:namiton:20220401124205p:plain

こんな感じに移動先のセットアップが多少楽になります。

f:id:namiton:20220401124305p:plain

イベントグラフに戻って

タイムラインSwitchAnimationを複製して名前をMoveAnimation。

フロートトラックの名前をAlphaに変更し長さを5にします。

f:id:namiton:20220401122337p:plain

 

カスタムイベントPlayMoveElevatorを作成し呼び出すごとに交互に入力するFlipFlopに接続します。

f:id:namiton:20220401130015p:plain

 

FlipFlop

交互に信号を送る

IsAはAが選ばれたかBoolで知らせてくれる。

f:id:namiton:20220401130214p:plain

 

 

ビルボードの位置はエレベーターと一緒に移動してしまうので、開始時に位置を保存しておく変数を作成してセットします。

f:id:namiton:20220401124628p:plain

 

ベクター型のLerpで制御します。

f:id:namiton:20220401125946p:plain

 

このイベントを呼び出します。

DoOnceノードを入れて移動完了後にリセットされるように変更しておきます。

f:id:namiton:20220401130733p:plain

 

このままだとボタンが戻るときにも呼ばれてしまうのでブランチノードで無視するようにしましょう。

f:id:namiton:20220401130900p:plain

f:id:namiton:20220401130921p:plain

 

完成!

f:id:namiton:20220401125435p:plain

 

移動先はエレベーターコンポーネント内のEndPosを見ているので、この位置を自由に変えてみて、実行時に移動先が変化することを確認してみましょう。

f:id:namiton:20220401132906p:plain

 

+α 移動速度を変更してみる。

タイムライン作成時に自動的に生成されるMoveAnimationからSetPlayRateを出します

このノードは現在のタイムラインの長さにスケールをかけることができます。

NewRateを変数化して公開しておきましょう。

f:id:namiton:20220401132203p:plain

これで速度も変更できるようになりました。

f:id:namiton:20220401132514p:plain

 

次回はレバーを作成してエレベータ-を制御できるようにします。

 

最後に

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。