目次
はじめに
注意
UE5Preview2の現在の情報です。
今後のアップデートによりUIや機能が変更される可能性があることをあらかじめご理解ください。
解説
①レベルを改造しよう
エレベーターのセットアップをする前にそれっぽいマップデザインに変更してみましょう。
1.エレベーター用のスペースを作る
SM_Cube5のスケールXを25にして
SM_Cubeを複製、スケールと位置を調整します。
2.エレベーター二階の床をUE5上でモデリングする。
モデリング用に別でメッシュを作成します。
SM_Cubeのアセットをブラウズして
複製します。
名前をSM_ElevatorFloorに変更しましょう。
エレベーターの二段目を複製して作成します。
StaticMeshは先ほど複製したSM_ElevatorFloorにセットしましょう。
この床にエレベータ-が通れる穴をあけます。
BP_Elevatorを仮置きしておきましょう。
穴をあける床を選択した状態でモデリングを選択します。
左のツールからPolyCutを選択しエレベーターが入る程度の穴をあけましょう。
3.くり抜いた床の当たり判定のセットアップ
このままだとコリジョンに当たってエレベーターに乗ったプレイヤーが押し出されるので、SM_ElevatorFloorのコリジョンを修正します。
ダブルクリックして開きましょう。
表示から単純なコリジョンを選択。
そうするとこのメッシュのコリジョンが表示されます。
穴が開いているところも判定があるので調整していきます。
詳細からUseComplexCollisionAsSimpleを押しましょう。
これで複雑な形状にあったコリジョンにセットアップされました。
保存を忘れずにしましょう。
レベルに戻りコリジョンプリセットをCustomにして
カメラをブロックしないように変更しましょう。
4.壁やライト、レバーの配置
SM_Cube5を複製して壁を作ります
穴をあけた床を複製して入り口を作ります。
開いた隙間を塞いでおきましょう。
中が真っ暗なのでPointLightを配置しておきます。
色や明るさなど調整しましょう。
エレベーターを配置して
エレベーターのコンポーネントEndPosを二階の床に配置します。
動作確認しておきましょう。
いい感じですね
呼び出し用のレバーも上と下で配置しておきましょう。
②エレベーターとレバーを連動させる
BP_Elevatorを開いて編集していきます。
1.レバー変数の作成と割り当て
BP_ElevatorLever型の変数を2つ作成して名前を付けましょう。
今回はアニメーションタイムラインからPlayとReverseで名づけました。
また詳細から選択できるようにインスタンス編集可能にします。
また、レベルに戻り詳細からアクタを指定しておきます。
BeginPlayの後にこれらのレバーが存在するかチェックしておきましょう。
2.BP_ElevatorLeverにイベントディスパッチャ-の追加と呼び出し
イベントディスパッチャーという機能を使ってレバーのイベントをエレベーターのイベントを叩けるようにします。
BP_ElevatorLeverにイベントディスパッチャー,EndLeverAnimを作成します。
EndLeverAnimをドラッグして呼び出すを押します。
Finishedにつなげます。
また、エレベーター側からレバーを操作できないようにするためのBool型の変数Is_DoActiveを作成します。
デフォルト値はFalseにしておきましょう。
そして、DoOnceの代わりにブランチに置き換えておきましょう。
3.BP_Elevatorにバインディング
BP_Elevatorを開いてイベントディスパッチャーにバインドします。
バインディング用のイベントを作成します。
作成したイベントをCreateEventで指定します。
これでプレイヤーがレバーを操作すると対応したイベントが呼ばれるようになりました。
レバーはプレイヤーが乗れないときにしか反応しないようにしたいため、現在のエレベーターの位置をキャッシュしておく変数Is_Play作成します。
デフォルト値はFalseです。
少し複雑に見えますがやっていることはシンプルです。
スイッチもしくはレバーの信号を受けとりキャッシュした位置に応じた挙動を行っています。
Finishedにはエレベーターの位置に応じてそれぞれのレバーが動かせるかどうかの変数にセットしてあげています。
これで基本的な実装は終わりです。
実行してエレベーターが来ていないときにレバーを押してみて動くことを確認してみてください。
それぞれの全体像を貼っておきます。
▼BP_Elevator
▼BP_ElevatorLever
③マテリアルをそれっぽくしてみる。
1.QuixelBridgeから素材の入手
Quixelの高品質なアセットを試しに使ってみたいと思います。
ウィンドウからQuixelBridgeを開き
マンホールで検索します。
今回はこのマテリアルを使わせていただきます。
サインインすれば使えるようになるので
任意のアカウントでサインインします。
2.マテリアルの作成と適応
ダウンロードが完了したらマテリアルM_Elevatorを作成します。
この3枚のテクスチャをマテリアルにドラッグアンドドロップしましょう。
そうしたら画像のようにノードを組みます。
マテリアルインスタンスを作成して
SM_Bodyに適応します。
見た目がいい感じになりましたね
3.DynamicMaterialInstanceを使って乗ったら光らせよう
使い方の詳細は以前解説してます。
サクッと作っていきましょう。
BP_Elevatorを開きBeginPlayからマテリアルインスタンスを作成。キャッシュします。
MoveAnimationに新しくカーブを作成します。
タイムラインの値からマテリアルの変数を制御します。
また、Emissiveが強すぎる感じがあったので調整用の変数を作成しました。
完成!お疲れ様でした
追加:呼び出し用のレバーははじめから操作できるようにするためセットノードを追加しておきましょう。
最後に
UE4やUE5向けの記事を書いています。
皆様の応援が投稿のモチベーションになりますので
コメントやTwitterのフォローなどしていただけるとありがたいです。
それではよきゲーム開発を。