こんにちは!
プログラム1課の山崎です。
今年も約1ヶ月で終わりとなりますが、皆さんいかがお過ごしでしょうか?
2023年は猛暑日が続いたりしていたので、 来年は過ごしやすい気温だと嬉しいですね!
さて、今回はUE5のNiagaraを使用したインク状のエフェクトを作成してみたいと思います。
環境
UE5.2.1
Niagaraとは?
NiagaraとはUE5内でエフェクトの作成が容易に行える便利な機能です。
エフェクト作成 → ゲーム起動して確認 → 修正したい箇所を直す
これらの工程をUE5内で完結できるので、他ツールを行ったり来たりする必要がありません!
他にも様々なテンプレートが用意されているので、簡単なパーティクルであれば選択してレベル上に配置するだけで、ゲームへ実装することができます。
![](https://i0.wp.com/logicalbeat.jp/wp01/wp-content/uploads/2023/11/スクリーンショット-2023-11-06-165419.png?resize=640%2C922&ssl=1)
実際に配置してみましたが、1分もかからずパーティクルを配置することができました。
とても便利です!
プロジェクト作成~エフェクト作成
それでは早速エフェクトの作成に入ります。
まずはUE5を立ち上げます。
今回はファーストパーソンのBPで作成していきます。
![](https://i1.wp.com/logicalbeat.jp/wp01/wp-content/uploads/2023/11/スクリーンショット-2023-11-09-150355.png?fit=640%2C461&ssl=1)
プロジェクト作成ができたら、任意のフォルダにエフェクトを作成しましょう。
コンテンツドロワーを右クリックして、FX → Niagaraシステムを選択します。
![](https://i1.wp.com/logicalbeat.jp/wp01/wp-content/uploads/2023/11/スクリーンショット-2023-11-06-172103.png?fit=609%2C1024&ssl=1)
選択したエミッタに基づく新しいシステムを選択します。
![](https://i0.wp.com/logicalbeat.jp/wp01/wp-content/uploads/2023/11/スクリーンショット-2023-11-06-172533-1.png?resize=640%2C898&ssl=1)
その後テンプレートを選択しますが、今回はインク状に飛ばすエフェクトを作成するので、Directional Burstを選択して緑の+ボタンを押して終了を押します。
![](https://i0.wp.com/logicalbeat.jp/wp01/wp-content/uploads/2023/11/スクリーンショット-2023-11-06-172641-1.png?resize=640%2C898&ssl=1)
そうするとコンテンツドロワーに追加されるので、任意の名前をつけてください。
今回は「FX_Splash」と名付けました。
エフェクトをインク状にする
Directional Burstが地面と当たったときに、インクを床に残したいので
デカール用のエフェクトをもう一つ追加します。
右クリックからエミッタを追加を選択して、「SimpleSpriteBurst」を選択します。
![](https://i0.wp.com/logicalbeat.jp/wp01/wp-content/uploads/2023/11/スクリーンショット-2023-11-06-181823.png?resize=640%2C711&ssl=1)
現在は白い円が描画されているだけですが、これを地面に接触したときのDecalに置き換えます。
当たり判定の追加
Directional Burstに当たり判定を付与して、地面にDecalを表示させましょう。
パーティクル更新の+ボタンを押して、
![](https://i0.wp.com/logicalbeat.jp/wp01/wp-content/uploads/2023/11/スクリーンショット-2023-11-09-120457.png?resize=640%2C665&ssl=1)
“collision”と検索して、表示される「Collision」と「Geberate Collision Event」の2つを追加します。
![](https://i0.wp.com/logicalbeat.jp/wp01/wp-content/uploads/2023/11/スクリーンショット-2023-11-09-120209.png?resize=640%2C558&ssl=1)
collisionを有効にすることによってコンパイルエラーが発生するので、
Directional Burst の「Requires Persistent IDs」のチェックを有効化します。
![](https://i0.wp.com/logicalbeat.jp/wp01/wp-content/uploads/2023/11/スクリーンショット-2023-11-09-121130.png?resize=562%2C826&ssl=1)
当たり判定が有効になったので、地面に跳ね返るようになりました!
Decalの生成
地面に当たったときにDecalを生成したいので、Simple Sprite Burstを修正します。
Simple Sprite Burstの「+ステージ」を押して「Event Handler」を選択します。
![](https://i0.wp.com/logicalbeat.jp/wp01/wp-content/uploads/2023/11/スクリーンショット-2023-11-09-134453.png?resize=495%2C537&ssl=1)
追加したイベントハンドラの設定を行います。
![](https://i0.wp.com/logicalbeat.jp/wp01/wp-content/uploads/2023/11/スクリーンショット-2023-11-09-140157.png?resize=569%2C269&ssl=1)
ソース : Collision Event
Execution Mode: Spawned Particles
Spawn Number : 1
設定はこれで完了です。
次に、追加されたイベントハンドラの+ボタンを押して、当たり判定受信用の
「Receive Collision Event」を追加します。
![](https://i0.wp.com/logicalbeat.jp/wp01/wp-content/uploads/2023/11/スクリーンショット-2023-11-09-134807.png?resize=640%2C484&ssl=1)
この状態で地面に当たると、円形のエフェクトが生成されるようになりました!
![](https://i0.wp.com/logicalbeat.jp/wp01/wp-content/uploads/2023/11/スクリーンショット-2023-11-09-142427.png?resize=640%2C362&ssl=1)
このままだとこちらを向いたままなので、Decal用のマテリアルを作成します。
今回は「M_Decal」という名前で作成しました。
Decal用のマテリアルなので「 Material Domain 」を「Deferred Decal」に変更します。
今回は「Blend Mode」を「Translucent」にしていますが、ここは自分が作りたいマテリアルに合わせて変更して大丈夫です。
![](https://i0.wp.com/logicalbeat.jp/wp01/wp-content/uploads/2023/11/スクリーンショット-2023-11-09-144142.png?resize=576%2C488&ssl=1)
マテリアルも下図のように作成しましたが、組み方も変えていただいて大丈夫です。
![](https://i0.wp.com/logicalbeat.jp/wp01/wp-content/uploads/2023/11/スクリーンショット-2023-11-09-144541.png?fit=640%2C332&ssl=1)
作成したDecal用のマテリアルをエフェクトに設定します。
Simple Sprite Burstのレンダリングの「Decal Renderer」を選択します。「Sprite Renderer」は削除して大丈夫です。
Materialの項目があるので、先程作成したマテリアルに変更します。
![](https://i1.wp.com/logicalbeat.jp/wp01/wp-content/uploads/2023/11/スクリーンショット-2023-11-09-145756.png?fit=640%2C460&ssl=1)
レベル上に配置して確認してみると、こちらを向いておらず地面と平行に描画されています!
![](https://i0.wp.com/logicalbeat.jp/wp01/wp-content/uploads/2023/11/スクリーンショット-2023-11-09-150007.png?resize=640%2C413&ssl=1)
エフェクトの生成
ある程度エフェクトは作成できたので、次は射撃時にエフェクトを生成するようにします。
Game/FirstPerson/Blueprintsにある「 BP_Weapon_Component 」を開いて、エフェクト生成の処理を加えます。
デフォルトだと左クリックで弾を発射するようになっているので、ここをエフェクト生成に置き換えます。
「Spawn System at Location」でエフェクトを生成できるので、
System Templateに作成したエフェクトを設定します。
弾の生成は必要ないので消してしまいましょう!
![](https://i2.wp.com/logicalbeat.jp/wp01/wp-content/uploads/2023/11/スクリーンショット-2023-11-13-190610.png?fit=640%2C444&ssl=1)
これで射撃時にエフェクト生成ができるようになりましたが、
Decalを生成しているSimpleSpriteBurstがすぐに消えてしまうので、
ある程度時間が経過してから消すようにします。
方法としては
・Initialize ParticleのLifetimeを変更する
・Particle Stateの「Kill Particles When Lifetime Has Elapsed」のチェックを外してエフェクトを削除しないように設定する
がありますが、今回は前者のエフェクトが消えるまでの時間を調整するやり方にしたいと思います。
SimpleSpriteBurstのInitialize Particle のLifetimeを今回は60.0に設定します。
![](https://i0.wp.com/logicalbeat.jp/wp01/wp-content/uploads/2023/11/スクリーンショット-2023-11-14-134842.png?resize=640%2C601&ssl=1)
設定が終わったら実際に確認してみましょう。
無事に発射でき、とても簡単にエフェクトを作成することができました!
最後に
私自身プログラマですが、簡単にエフェクトの作成から実装まで行うことができました。
最初から選択できるテンプレートを変えると違うタイプのエフェクトも容易に作成することができるので、ぜひ試してみてください!
最後までご覧いただきありがとうございました!
【免責事項】
本サイトでの情報を利用することによる損害等に対し、
株式会社ロジカルビートは一切の責任を負いません。