はじめに
最近UE5(Blueprint)の勉強をモクモクとやっていましたが、爆発エフェクトが簡単にできてエモくてアガったので、自分と同レベルの超初心者向けに記事を書いてみようと思いました。
前提情報
・バージョン:5.1.0
・Windows11 64bit
やりたいこと
起動後、2秒待ってから該当するCubeが爆発する。
(BeginPlay後、2秒Delayの後に爆発エフェクトを出して該当CubeをDestroyする)
プロジェクトの作成
「サードパーソン」を選び、「スターターコンテンツ」にチェックして任意の名前で作成します
レベルブループリント
(1) 該当Cubeを選択、座標調整してレベルブループリントを開く
①編集画面が開いたら、まず対象となるCubeを初期配置されているものから選びます。
レベルの中央付近にある青いCube「SM_ChamferCube」をクリックして選択状態にします。
②選択したCubeの緑(Y軸)の矢印をドラッグして、プレイヤー初期位置(PlayerStart)の近くに移動させます。下の例では「Y:1250.0」にしています。
③選択した状態のまま、編集画面上部のブループリントのアイコンから「レベルブループリントを開く」を選択し、レベルブループリントを開きます。
(2) BeginPlay後にDelay2秒
レベルのイベントグラフ(レベルブループリント編集画面)が開いたら、以下のノードを配置します。
①「BeginPlay」ノード
②「Delay」ノード:Duration(遅延時間)を2.0秒に設定します
下の通り、BeginPlayからDelayへつなぎます
※BeginPlayノード右の端子から線を伸ばすと自動的に次に実行可能なアクション(ノード)の選択・検索ダイアログが出ますので、ここでDelayを選択してつなぐ方法もあります。
適度なタイミングで保存とコンパイルをしておきます。
(3) Delay後に爆発エフェクト
以下のノードを配置します。
①「SpawnEmitteratLocation」ノード
②「GetActorLocation」ノード
※GetActorLocationノードを配置すると自動的に「SM_ChamferCube」(先程選択したアクター)がターゲットについてきます。
DelayのCompleted端子からSpawnEmitteratLocationノードへつなぎます。
GetActorLocationのReturnValue端子をSpawnEmitteratLocationノードのLocation端子につなぎます。
※右クリックから「SM_ChamferCubeのリファレンスを作成」で選択したアクターの参照ノードを個別に置くこともできます。
最後にSpawnEmitteratLocationノードの「EmitterTemplate」をクリックし「P_Explosion」を選択します。
ここまでの全体像です。
(4) 爆発エフェクト後にDestroy
以下のノードを配置します。
①DestroyActorノード
SpawnEmitteratLocationからDestroyActorノードにつなぎます。
ターゲットはselfではなく「SM_ChamferCube」(青いCube)ですので、以下のいずれかの方法でターゲットにSM_ChamferCubeをつなぎます。
【方法1】GetActorLocationが参照しているSM_ChamferCubeから線を引っ張ってくる。
【方法2】「SM_ChamferCubeのリファレンスを作成」で「SM_ChamferCube」を新たに用意する。
方法2の方がシンプルですかね…
完成
ブループリントの完成形です。
ブループリント編集画面を閉じてレベル編集画面から実行すると、実行2秒後に爆発エフェクトをだして青いCubeが消えます。
一応GitHubにリポジトリもあります。
https://github.com/risaito74/UE5_Delay2DestroyCube
※爆発エフェクトが見えない?
開発環境によっては?初回起動時は爆発エフェクトの描画が間に合わず?爆発エフェクトが正しく見えない場合があるようです。この場合、もう一度実行しなおすと、ちゃんと爆発エフェクトが確認できると思います(自分の環境がそうでした…)
おわりに
主に自分の備忘録として作成した記事ですが、参考になれば幸いです。