【Unreal Engine5】初めてのゲーム開発 <第8回>~チュートリアル動画「Your First Game In Unreal Engine5」 を解説風に③

Your First Game In Unreal Engine5」という初心者用動画を実際に並走しながら実際に作って勉強する企画。

第1回はStatic Meshの基礎と地形操作について
第2回はアニメーションをつけたキャラクター操作とAIによる探索について
今回は残り全部を見ていく予定。

どこまでStack O Bot風のゲーム作りのノウハウを学習できるのか楽しみです。

今回は61分/83分から。

使用しているバージョン

Unreal Engine 5.3.2

目次

Interaction Component

プラットフォームの設置とON/OFFアニメーション [1:01:22~]

新規ブループリント(アクタ)としてBP_PressurePlateを作成。

BP_PressurePlateを開いたら、コンテンツドロワーウィンドウから以下の2ファイルをコンポーネントにD&Dで追加
SM_PressurePlate_Frame
SM_PressurePlate_Platform


SM_PressurePlate_Frameをルート下に移動(DefaultSheneRootにD&Dで変更できる)。

動画からのスクリーンショット

理由は不明ですが、上材質のマテリアルであるM_Plasticの色が異なるためプレッシャープレートの色がおかしい(ピンク一色)。

なのでM_Plasticを複製(M_PlasticW)し、ベースカラーのみ白に変更したMaterialを新規に作成。

SM_PressurePlate_PlatformのマテリアルをM_PlasticWに変更することで対応しました。
動画と同じように進行できていればこの辺りの工程は必要ありません。

Box Collisionを追加

大きさをプラットフォームに合わせます。
今回は地面の上に置くので下側のCollisionは適当。

OnComponentBeginOverlapを追加

OnComponentEndOverlapを追加

BP_PressurePlate

Add Timelineタイムライン関数(0.5秒をかけて0⇒1)
設定値は後述
SM_PressurePlate_FrameコンポーネントからD&D
Multiply乗算
SetRelativeLocationTargetを基準として相対座標で移動

Timeline

①フロートトラックを追加(長さを0.5秒に)
②始点や終点を追加(SHIFT+クリック)
③始点座標(0,0)/終点座標(0.5,1)
④グラフ上にある⇔⇕でグラフの幅を合わせる(任意)

ドアの設計 [1:04:54~]

新規ブループリント(アクタ)としてBP_Doorを作成。

①BP_DoorのコンポーネントにSM_Modular_WallDoorを追加し、ルートに配置
②BP_DoorのコンポーネントにSM_Doorを2つ追加(SM_Door_L、SM_Door_R)
③BP_Doorのコンポーネントにsceneを2つ追加(Anchor_L、Anchor_R)
④Anchor_Lの子にSM_Door_L、Anchor_Rの子にSM_Door_Rとなるようにコンポーネント移動
⑤Anchor_L、Anchor_Rの位置をSM_Modular_WallDoorの内側淵に設置
⑤Anchor_RをZ軸回転180

ポイント:親であるAnchorを反転させることで、SM_Door_L、SM_Door_Rはどちらも同じ処理を適用できる

Anchor_L
SM_Door_L
Anchor_R
SM_Door_R

要はドアが閉じた状態になっていればOK

自動でドアを開けるテスト [1:06:14~]

動作テストとして、ゲーム開始後5秒後に開くドアを設計します。

BP_Door

Actor Componentを追加

Add Custom EventOpenDoorとCloseDoorの2つを追加
Add Timelineタイムライン関数(0.5秒をかけて0⇒1)
設定値は後述
SM_Door_L,SM_Door_RコンポーネントからD&D
Multiply乗算 ※-70を設定
SetRelativeLocationTargetを基準として相対座標で移動
Event BeginPlay/Delay/Open Doorは省略

TimeLine

基本的にはBP_PressurePlateと同様の流れです異なる点のみ

始点・終点においてキー補完を「分割」

表示された接線を移動させることで曲線的な速度設定が可能。


ここまででビューポートにBP_Doorを配置してプレイ(Alt+P)してみると、ドアが開く挙動が見れると思います。

プレートと連動したドアの開閉 [1:08:40~]

Frameworkフォルダの下にブループリント(Actor Component)を作成(BP_InteractionComponent)

BP_InteractionComponent

Add Custom EventStartInteractionとStopInteractionの2つのノードを作成
OnInteractイベントディスパッチャーに追加し、それをイベントグラフに呼び出す。
詳細パネルにon(boolean型)のインプットを追加

BP_PressurePlate ※一部

上で作成したイベントグラフにBP_InteractionComponentで作成したイベントを追加

①コンポーネントにBP Interaction Componentを追加
②BP Interaction ComponentをイベントグラフにD&D
③BP Interaction ComponentからStart Interaction/Stop Interactionをコールし、実行ワイヤーを繋ぐ

BP_Door ※Event BeginPlay部分のみ

Get Trigger後述の方法で設置
Get Component By Class対象(BP_Interaction Component)のコンポーネント取得
(?)Is Validコンポーネント取得できたかチェック
Assign XXXX今回の場合はAssign OnInteract
イベントディスパッチャーのOnInteractをコール
※データワイヤ―(青)から繋げるか、状況に合わせた表示OFFにしないと出てこない
BranchOnInteractのon変数(boolean)の判定
Open Door/Close Door自BPの関数をコール

Get Triggerの設置方法

Actor型(オブジェクト参照)のTrigger変数を追加。
Trigger変数のインスタンス上の編集可に変更(目のマークを開ける)。

イベントグラフに配置D&D(Get Trigger)

関数を右クリックし、検証済みゲットに変換

ビューポート画面

TriggerはBP_Doorの変数(Actor型)

BP_PressurePlate
インスタンス

BP_interactionComponent
処理

BP_Door
インスタンス

多分こんな感じ

BP_PressurePlate(インスタンス)とBP_Door(インスタンス)をビューポートの個々のアクタの詳細設定で繋げることで、どのプレートがどのドアと対応するのかを指定している(多分)

なお、ドアのコリジョン設定をしていないので、開いても入れない模様

エフェクト処理

Niagaraを使った砂ぼこりエフェクト作成 [1:13:21~]

Effectsフォルダを作成し、Niagaraシステムのアセットを作成。

FX_Dust(最初からあるノード)の詳細から、Loop Behaviorをonceに設定

エミッタを追加 > Empty

Emptyノードでエミッタの更新(+)からSpawn Burst Instantaneousを追加

Spawn Countに10を設定

Initialize Particleの設定を変更

パーティクルのスポーン(+)からAdd Velocityを追加

エラーが出た場合は問題を修正(SolveForceAndVelocityを追加)を選択。

Add VelocityではCone Axisで方向の調整ができます。

パーティクル更新(+)からScale Sprite Sizeを追加

キーデータ(1,15)に調整

パーティクル更新(+)からCurl Nose Forceを追加
無秩序さを設定できます。

Nose Strengthを15に。

パーティクル更新(+)からGravity Forceを追加

パーティクル更新(+)からScale Colorを追加

Scale AlphaにFloat from Curveを追加。
キーデータ(0.6,0)を設定して、少し早めに消えるようにします。

最終的には以下のようになりました

Niagaraを使った砂ぼこりエフェクト作成 [1:16:42~]

アニメーションのA_Antbot_Runに先ほどのNiagaraの砂ぼこりのエフェクトを実装

アニメーションを一時停止、右足が着地するポイントに進行ラインを合わせます。

トラック(1)の上で右クリックすると「通知を追加」というコマンドが表示されますので、「Play Niagara Particle Effect」を選択。

きちんと進行ラインの上でクリックしないと表示されないので注意。

追加した「Play Niagara Particle Effect」の詳細画面から、Niagara SystemにFX_Dustを選択。
Socket Nameにはfoot_r(右足)やfoot_l(左足)を設定することで、エフェクトの出現ポイントがそれぞれのボーンの位置になります。

右足が地面についたタイミングで右足から砂ぼこり、左足も同じようにという感じの処理になりますね。

サウンドエフェクト作成 [1:18:05~]

この章ではプロシージャルに音を作成していますが、あまり理解ができていません。
初心者向け動画の中では、深掘りする必要性は低い部分なのである程度スルーしてしまってもいいと思います。

MetaSoundのプラグインを有効化(デフォルトでおそらく有効化されています)。

Audio用のフォルダを作成し、MetaSoundパッチのアセットを作成(SFX_FootStep)

SFX_FootStep

Input開始ノード(配置済)
Output終了ノード(配置済)×2
AD Envelope (Audio)プロシージャルに音を生成
Square(短形波ジェネレータ)音の調整?
Noiseノイズを生成
Add/Multiply音の合成に使用

画像の設定で、動画と同じになります。
砂を蹴るような音になると思います。

サウンドエフェクトをアニメーションに追加 [1:18:05~]

A_Antbot_Run

①通知の右▼から通知トラック(2)を追加
②トラック(2)に右クリックメニューからPlay Soundを追加
③詳細パネルでSoundにSFX_FootStepを設定(コントロールドロワーで選択しながらだと自動で登録)

カメラシェイク [1:20:58~]

Efectsフォルダで新規ブループリント(CameraShakeBase)を作成し、CameraShakeという名前にします。

カメラシェイクに関しては上記のように設定。

BP_Door ※OpenDoorの最後に追加
ドアの開閉時にカメラシェイクを発生させるように変更します。

Get Actor Locationself(BP_Door)の位置を取得
Play World Camera Shakeドアの開閉時にCameraShakeを行う

Your First Game In Unreal Engine5を終えて

一言感想

めっちゃ大変だったけど、やってよかった!

字幕が機械翻訳ではなくて、きちんとした翻訳して下さってるのが本当にありがたかった。
これからUE5に触る方には、基礎的な操作方法を学んでからであれば非常にオススメできる動画です。
ここまで読んでくださった方、並走してコーディングして下さった方お疲れさまでした。

第1回は環境周りと箱作り
第2回は入力情報、アニメーション、アイテムの取得、AIの挙動
第3回はプラットフォームやドアの挙動、物理エフェクト、サウンドエフェクト

と言った部分を扱いました。

振り返ってみると、第1回のフォリッジ関係は毛色が違く戸惑いましたが、第2回、第3回と動画の通りに進めることで色々身についた部分も多かったです。

特に第3回のスイッチ/ドアの挙動に関してはギミックとして知りたかった部分でした。
ON/OFF挙動をタイムラインで操作するのは色々な場面で使えそうです。

もう少し深掘りしてほしかったのはカメラワークについてで、今後勉強していきたい。

では、今回はこのあたりで。




I

コメント

コメントする

目次