「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 | 乗算 |
SetRelativeLocation | Targetを基準として相対座標で移動 |
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 Event | OpenDoorとCloseDoorの2つを追加 |
Add Timeline | タイムライン関数(0.5秒をかけて0⇒1) 設定値は後述 |
SM_Door_L,SM_Door_R | コンポーネントからD&D |
Multiply | 乗算 ※-70を設定 |
SetRelativeLocation | Targetを基準として相対座標で移動 |
TimeLine
基本的にはBP_PressurePlateと同様の流れです異なる点のみ
始点・終点においてキー補完を「分割」
表示された接線を移動させることで曲線的な速度設定が可能。
ここまででビューポートにBP_Doorを配置してプレイ(Alt+P)してみると、ドアが開く挙動が見れると思います。
プレートと連動したドアの開閉 [1:08:40~]
Frameworkフォルダの下にブループリント(Actor Component)を作成(BP_InteractionComponent)
BP_InteractionComponent
Add Custom Event | StartInteractionと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にしないと出てこない |
Branch | OnInteractの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 Location | self(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
コメント