はじめに
UnrealEngineを学習するにあたってのメモを記事にまとめます。
本記事で最後です。
前回
今回やること
UnrealEngineの公式サイトにあるLearningの「Your First Game In Unreal Engine 5」を題材に学習していきます。
本記事では主に以下を扱います。
- 開閉するドアとスイッチの作成
- エフェクトの作成
- 画面揺れ
[開発環境]
windows 11
UnrealEngine 5.3.2
Interaction Component
動画時間:1:01:22~
- 「コンテンツドロワー」を開いて、「GameElements」フォルダで右クリックして「ブループリントクラス/Actor」を選択する
- 作成したブループリントの名前を「BP_PressurePlate」にする
- 「BP_PressurePlate」の編集エディターを開く
- 「コンテンツドロワー」を開いて、「Props」フォルダにある「SM_PressurePlate_Frame」「SM_PressurePlate_Platform」を「コンポーネント/BP_PressurePlate/DefaultSceneRoot」にドラッグ&ドロップして追加する
- 「SM_PressurePlate_Frame」を「DefaultSceneRoot」にドラッグ&ドロップで上書きする
- 「SM_PressurePlate_Frame」を選択し、「コンポーネント」の「追加」で「Box Collision」ほ追加する
- 「Box Collision」を選択してスケールを変更して、オブジェクトのサイズに合うように合わせる
- 「Box Collision」を右クリックして「イベントを追加」から「Component Begin Overlap」「Component End Overlap」を追加する
- 「Component Begin Overlap」「Component End Overlap」の実行にそれぞれ確認用の「Print String」を追加する
- コンパイルを実行して更新する
- Valleyレベル内に「BP_PressurePlate」をステージに設置する
- プレイボタンを押して実行して、「BP_PressurePlate」内に出入りするとデバック表示されるのが確認出来る
- 「BP_PressurePlate」の「イベントグラフ」に戻る
- 確認用設定した「Print String」を削除する
- ノードを「Add Timeline」を選択して「Timeline」ノードを追加して、名前を「PlateAnimation」にする
- 「PlateAnimation」をダブルクリックして、Timelineの編集エディタを開く
- 長さを「0.5」にする
- 「トラック」から「フロートトラックを追加」を選択し、名前を「PlateMovement」にする
- カーブエディターに2つのキーを追加する
- 1つ目をTime「0.0」、Value「0.0」にする
- 2つ目をTime「0.5」、Value「1.0」にする
- イベントグラフに戻る
- コンポーネントの「SM_PressurePlate_Platform」をグラフ内に入れる
- 「SM_PressurePlate_Platform」から「Set Relative Location」ノードを追加する
- 「PlateAnimation(Update)」->「Set Relative Location(実行)」に接続する
- 「Multiply」ノードを追加する
- 「PlateAnimation(Plate Movement)」->「Multiply(実行)」に接続する
- 「Set Relative Location」の「New Location」を右クリックから「構造体ピンを分割」で分割する
- 「Multiply(実行)」->「Set Relative Location(Location Z)」に接続する
- 「Multiply」の値を「-10」にする(動画では-20だが後で-10になる)
- 「On Component Begin Overlap」->「PlateAnimation(Play)」に接続する
- 「On Component End Overlap」->「PlateAnimation(Reverse)」に接続する
- コンパイルを実行して更新する
- プレイボタンを押して実行して、「BP_PressurePlate」の上に移動する、アニメーションが入っているのが確認できる
- 「コンテンツドロワー」を開いて、「GameElements」フォルダで右クリックして「ブループリントクラス/Actor」を選択する
- 作成したブループリントの名前を「BP_Door」にする
- 「BP_Door」の編集エディターを開く
- 「コンテンツドロワー」を開いて、「Props」フォルダにある「SM_Modular_WallDoor」を「コンポーネント/BP_PressurePlate/DefaultSceneRoot」にドラッグ&ドロップして追加する
- 「SM_Modular_WallDoor」を「DefaultSceneRoot」にドラッグ&ドロップで上書きする
- 「コンテンツドロワー」を開いて、「Props」フォルダにある「SM_Door」を2つ「SM_Modular_WallDoor」にドラッグ&ドロップして追加するして、名前をそれぞれ「SM_Door_L」「SM_Door_R」にする
- 「SM_Modular_WallDoor」を選択して、「追加/Scene」でSceneを追加して、名前を「Anchor_L」にする
- 「Anchor_L」に「SM_Door_L」を入れる
- 「Anchor_L」の位置を「X=0.000000,Y=170.000000,Z=0.000000」にする
- 「SM_Modular_WallDoor」を選択して、「追加/Scene」でSceneを追加して、名前を「Anchor_R」にする
- 「Anchor_R」に「SM_Door_R」を入れる
- 「Anchor_R」の位置を「X=0.000000,Y=330.000000,Z=0.000000」に、回転を「X=0.000000,Y=0.000000,Z=180.000000」
- コンパイルを実行して更新する
- イベントグラフを開く
- すでにあるイベントのノードをすべて削除する
- ノードを「Add Custom Event」を選択して「Custom Event」ノードを2つ作成し、名前をそれぞれ「OpenDoor」「CloseDoor」にする
- ノードを「Add Timeline」を選択して「Timeline」ノードを追加して、名前を「DoorAnimation」にする
- 「DoorAnimation」をダブルクリックして、Timelineの編集エディタを開く
- 長さを「0.5」にする
- 「トラック」から「フロートトラックを追加」を選択し、名前を「DoorMovement」にする
- カーブエディターに2つのキーを追加する
- 1つ目をTime「0.0」、Value「0.0」にする
- 2つ目をTime「0.5」、Value「1.0」にする
- 2つのキーを選択状態にして、2つ目のキーに右クリックから「分割」を選択する
- カーブを徐々に上がるようにカーブ設定する
- イベントグラフに戻る
- コンポーネントの「SM_Door_L」「SM_Door_R」をグラフ内に入れる
- 「SM_Door_L」から「Set Relative Location」ノードを追加する
- 「On SM_Door_R」->「Set Relative Location(Target)」に接続する
- 「DoorAnimation(Update)」->「Set Relative Location(実行)」に接続する
- 「Multiply」ノードを追加する
- 「DoorAnimation(Door Movement)」->「Multiply(実行)」に接続する
- 「Set Relative Location」の「New Location」を右クリックから「構造体ピンを分割」で分割する
- 「Multiply(実行)」->「Set Relative Location(Location Y)」に接続する
- 「Multiply」の値を「-40」にする
- 「OpenDoor」->「DoorAnimation(Play)」に接続する
- 「CloseDoor」->「DoorAnimation(Reverse)」に接続する
- 「Event BeginPlay」ノードを追加する
- 「Delay」ノードを追加する
- 「Event BeginPlay」->「Delay(実行)」に接続する
- 「Delay」のDurationを「3.0」にする
- 「OpenDoor」ノードを追加する
- 「Delay」->「OpenDoor(実行)」に接続する
- コンパイルを実行して更新する
- Valleyレベル内に「BP_Door」をステージに設置する
プレイボタンを押して実行して、3秒後にドアが開く
- 「コンテンツドロワー」を開いて、「Framework」フォルダで右クリックして「ブループリントクラス/Actor Component」を選択する
- 作成したブループリントの名前を「BP_InteractionComponent」にする
- 「BP_InteractionComponent」の編集エディターを開く
- すでにあるイベントのノードをすべて削除する
- ノードを「Add Custom Event」を選択して「Custom Event」ノードを2つ作成し、名前をそれぞれ「StartInteraction」「StopInteraction」にする
- 「マイプループリント/イベントディスパッチャー」から追加して、名前を「OnInteract」にする
- 「OnInteract」を選択し、「インプット」の「追加」をして、名前を「on」にする
- 「OnInteract」をグラフにドラッグ&ドロップして「呼び出し」で追加する
- 「StartInteraction」->「Call On Interact(実行)」に接続する
- 「Call On Interact」の「On」をONにする
- 「Call On Interact」の複製を作る
- 「StopInteraction」->「Call On Interact(実行)」に接続する
- 「Call On Interact」の「On」をOFFにする
- コンパイルを実行して更新する
- 「BP_PressurePlate」の編集エディターを開く
- 「コンポーネント」を追加で「BP_InteractionComponent」を追加する
- 「BP_InteractionComponent」をグラフにドラッグ&ドロップで追加する
- 「BP_InteractionComponent」から「Start Interaction」ノードを追加する
- 「On Component Begin Overlap」->「Start Interaction(実行)」に接続する
- 「Start Interaction」->「PlateAnimation(Play)」に接続する
- 「BP_InteractionComponent」から「Stop Interaction」ノードを追加する
- 「On Component End Overlap」->「Stop Interaction(実行)」に接続する
- 「Stop Interaction」->「PlateAnimation(Reverse)」に接続する
- コンパイルを実行して更新する
- 「BP_Door」の編集エディターを開く
- 「Event BeginPlay」に接続している「Delay」「Open Door」を削除する
- 「マイプループリント」の「変数」を追加し、名前を「Trigger」にし、変数の型を「Actor」にする
- 「Trigger」の目のアイコンをONにする
- 「Trigger」をグラフにドラッグ&ドロップして「Get」で追加する
- グラフの「Trigger」を右クリックして「検証済みゲッドに変換」を選択し「Get」に変換する
- 「Event BeginPlay」->「Get(実行)」に接続する
- 「Get Component by Class」ノードを追加する
- 「Get(Trigger)」->「Get Component by Class(Target)」に接続する
- 「Get Component by Class」の「Component Class」を「BP_InteractionComponent」にする
- 「? Is Valid」ノードを追加する
- 「Get Component by Class(Return Value)」->「? Is Valid(Input Object)」に接続する
- 「Get(Is Valid)」->「? Is Valid(Exec)」に接続する
- 「Get Component by Class(Return Value)」からノード作成で「Assign On Interact」を選択して「Bind Event to On Interact」「OnInteract_Event」を追加する
- 「? Is Valid(Is Valid)」->「Bind Event to On Interact(実行)」に接続する
- 「Branch」ノードを作成する
- 「OnInteract_Event(On)」->「Branch(Condition)」に接続する
- 「OnInteract_Event(実行)」->「Branch(実行)」に接続する
- 「OpenDoor」「CloseDoor」ノードを作成する
- 「Branch(True)」->「OpenDoor(実行)」に接続する
- 「Branch(False)」->「CloseDoor(実行)」に接続する
- コンパイルを実行して更新する
- Valleyレベルを開く
- 「BP_Door」を選択し、「詳細/デフォルト」の「Trigger」を「BP_PressurePlate」にする
- プレイボタンを押して実行して、「BP_PressurePlate」の上に移動すると「BP_Door」が開き、「BP_PressurePlate」から離れると「BP_Door」が閉まる
Effects, Sounds & Camera Shake
動画時間:1:13:22~
- 「コンテンツドロワー」を開いて、「Content」内に「Effects」フォルダを作成する
- 「Effects」フォルダを選択する
- 右クリックから「FX/Niagaraシステム」を選択し、「空のシステムを作成」を選択し、名前を「FX_Dust」にする
- 「FX_Dust」の編集エディターを開く
- グラフ内の「FX_Dust/System State」を選択する
- 「詳細/LoopBehavior」を「Once」にする
- グラフ内で右クリックして、「エミットを追加/Empty」を選択する
- 「Empty」の「エミットの更新」の追加から「Spawn Burst Instantaneous」を選択する
- 追加した「Spawn Burst Instantaneous」を選択する
- 「詳細/Spawn Count」の値を「10」にする
- 「Empty」の「Spawn Burst Instantaneous」を選択する
- 「詳細/Point Attributes/Color Mode」を「Direct Set」に変更する
- カラーを「R:0.596 G:0.418 B:0.000」にする
- 「詳細/Sprite Attributes/Sprite Size Mode」を「Random Uniform」に変更する
- 「詳細/Sprite Attributes/Sprite Size Mode/Uniform Sprite Size Min」を「2.0」に変更する
- 「詳細/Sprite Attributes/Sprite Size Mode/Uniform Sprite Size Max」を「4.0」に変更する
- 「詳細/Point Attributes/Mass Mode」を「Random」に変更する
- 「Empty」の「パーティクルのスポーン」の追加から「Add Velocity」を選択する
- 「Add Velocity」の詳細に出ているエラーを「問題を修正」で解決する
- 「詳細/Add Velocity/Velocity Mode」を「In Cone」に変更する
- 「詳細/Cone/Cone Axis/x」を「-1.0」に変更する
- 「Empty」の「パーティクルの更新」の追加から「Scale Sprite Size」を選択する
- 「Scale Sprite Size」の「詳細」のカーブエディターの右の2つ目のノードを選択する
- キーデータのYを「15」に変更する
- 「Empty」の「パーティクルの更新」の追加から「Curl Noise Force」を選択する
- 「Curl Noise Force」の「詳細/Curl Noise Force/Noise Strength」を「15」に変更する
- 「Empty」の「パーティクルの更新」の追加から「Gravity Force」を選択する
- 「Gravity Force」の「詳細/Gravity Force/Gravity/Z」を「30」に変更する
-
「Empty」の「パーティクルの更新」の追加から「Scale Color」を選択する
-
「Scale Color」の「詳細/Scale Color/Scale Alpha」に「Float from Curve」でカーブエディターを追加する
-
カーブエディターの右の2つ目のノードを選択する
-
キーデータのXを「0.6」に変更する
-
アセットの保存をする
-
「コンテンツドロワー」を開いて、「Character/A_Antbot_Run」を開く
-
アニメーションを20%くらいで停止する
-
トラック「1」に 、停止しているタイミングの位置に右クリックして「通知を追加/Play Niagara Particle Effect」を追加する
-
追加した「Play Niagara Particle Effect」を選択して、「詳細/NiagaraSystem」に「FX_Dust」を選択する
-
「詳細/Socket Name」に「foot_r」を選択する
-
アニメーションを71%くらいで停止する
-
トラック「1」に 、停止しているタイミングの位置に右クリックして「通知を追加/Play Niagara Particle Effect」を追加する
-
追加した「Play Niagara Particle Effect」を選択して、「詳細/NiagaraSystem」に「FX_Dust」を選択する
-
「詳細/Socket Name」に「foot_l」を選択する
-
アセットの保存をする
- プレイボタンを押して実行して、走ると追加したエフェクトが発生する
- 「コンテンツドロワー」を開いて、「Content」内に「Audio」フォルダを作成する
- 「編集/プラグイン」で「MetaSound」があることを確認する
- 「Audio」フォルダを選択する
- 右クリックして、「オーディオ/MetaSoundソース」を追加して名前を「SFX_FootStep」にする
- 「SFX_FootStep」の編集エディターを開く
- 「Noise」を追加する
- 「Noise」のタイプを「White Noise」にする
- 「AD Envelope(Audio)」を追加する
- 「Input」->「AD Envelope(Audio)(Trigger)」に接続する
- 「Multiply(Audio)」を追加する
- 「AD Envelope(Audio)(Out Envelope)」->「Multiply(Audio)」に接続する
- 「Multiply(Audio)」->「Output」に接続する
- 「AD Envelope(Audio)」の「減衰時間」を「0.3」、「AttackCurve」を「0.1」、「DecayCurve」を「0.2」に設定する
- 「Square(矩形波)」を追加する
- 「Square」の「周波数」を「10.0」、「パルス幅」を「1.0」に設定する
- 「Add(Audio)」を追加する
- 「Square(オーディオ)」->「Add(Audio)」に接続する
- 「Add(Audio)」->「Multiply(Audio)」に接続する
- 「Multiply(Audio by Float)」を追加する
- 「Multiply(Audio by Float)」の値を「0.1」に設定する
- 「Noise(Audio)」->「Multiply(Audio by Float)」に接続する
- 「Multiply(Audio by Float)」->「Add(Audio)」に接続する
- アセットの保存をする
- オーディオの再生ボタンを押して音を確認する
- 「コンテンツドロワー」を開いて、「Character/A_Antbot_Run」を開く
- 「通知トラックを挿入」をしてトラクック「2」を作る
- トラクック「2」に、20%くらいの位置に「PlaySound」を追加する
- 追加した「PlaySound」を選択して、「詳細/アムニノーティファイ/Sound」に「SFX_FootStep」を選択する
- トラクック「2」に、71%くらいの位置に「PlaySound」を追加する
- 追加した「PlaySound」を選択して、「詳細/アムニノーティファイ/Sound」に「SFX_FootStep」を選択する
- アセットの保存をする
-
プレイボタンを押して実行して、走ると追加したサウンドが鳴る
-
「コンテンツドロワー」を開いて、「Effects」フォルダを選択する
-
右クリックして、「プループリント/DefaultCameraShakeBase」を選択し、名前を「CamerShake」にする
- 「CamerShake」の編集エディターを開く
- 「詳細/Root Shake Pattern/Timing」の「Duration」を「0.1」、「Blend in Time」を「0.01」、「Blend Out Time」を「0.05」に設定する
- 「詳細/Root Shake Pattern/Location」の「Location Amplitude Multiplier」を「8.0」、「Location Frequency Multiplier」を「12.0」に設定する
- コンパイルを実行して更新する
- 「BP_Door」の編集エディターを開く
- 「PlayWorldCameraShake」ノードを追加する
- 「SetRelativeLocation(実行)」->「PlayWorldCameraShake(実行)」に接続する
- 「PlayWorldCameraShake」の「Shake」を「CamerShake」に設定する
- 「GetActorLocation」ノードを追加する
- 「GetActorLocation」->「PlayWorldCameraShake(Epicenter)」に接続する
- 「PlayWorldCameraShake」の「OuterRadius」を「10000」に設定する
- コンパイルを実行して更新する
- プレイボタンを押して実行して、ドアを開くと画面揺れが発生する
以上、終了