【UE4 .26】警告アラート的なHUD風パーティクルをNiagaraで作る

 コレを作ります。

 

まず、このパーティクルを作る上で要素を分けます(作成する過程が一緒で少し中の数値をいじったものをまとめます)。

 

 パーティクルを単純に回転させているものです(使っているマテリアル等に関しては後述します)。

 

 丸い円が広がりながら上昇してフェードアウトしていくものです。

 

 「緊急」の文字のついたパーティクルがランダムにスポーンされアニメーションするものです。

 

ひとつめから説明していきます。

 

 パーティクルを単純に回転させているもの

 

f:id:ten0313:20210626085932p:plain

やっている事は、真四角の平面メッシュに表示させたいマテリアルを張りつけて回転させているだけです。

基本はEmptyからエミッタを作成してMeshパーティクルを設定し、設定を少しいじっているだけなので特別なことはしていません。最低限、必要なモジュールを説明すると

 

f:id:ten0313:20210626100421p:plain

Initialize Particle

PositionMode内のPositionOffsetのZ軸を変更させ、高さを変えています。
また、MeshAttributesのMeshScaleModeをUniformに設定して数値を1.2にしてサイズを変更しています。

f:id:ten0313:20210626090711p:plain

SpawnBurst_Instantaneous

SpawnCountに1を設定することで、パーティクル生成時にひとつだけスポーンされます。(このモジュールと設定は今後説明するエミッタ達でも基本共通して追加してあります)

 

f:id:ten0313:20210626091044p:plain

Color

色の設定をしています。今回作るパーティクルでは、共通する色を持ったエミッタが複数存在しているので ひとつの場所から一括で変更できるようにした方が、調整が楽です。ユーザー属性の場所に色の情報の値を保持させてそれぞれのエミッタに設定しています。(システム属性で良いとも思いましたが、後々ゲーム内などで扱う際に外部から変更できた方が使い勝手が良さそうだなと思ったので...)


ユーザー属性にパラメータを追加する方法を書きます。

f:id:ten0313:20210626092026p:plain

「パラメータ」ウインドウから「公開されたユーザー」の横の+ボタンをクリックしてcolorと入力し、「Liner Color」を選択します。設定した値をエミッタに適用させたい場合は、追加した値をエミッタ内のモジュールにドラッグアンドドロップすればOKです。

 

各エミッタで共通する色の情報等の変数を持たせておくと、一括で変更できるので 調整、後々の変更などがしやすくて便利です。

f:id:ten0313:20210626093614p:plain

Particle State

一定時間でエミッタが消えてしまわないように設定しました。

 

f:id:ten0313:20210626093150p:plain

Update Mesh Orientation

「パーティクル更新」に追加します。メッシュパーティクルにZ軸を基とした回転を加えています。

数値を正の値にしたり負の値にすることで回転の方向を変更できます。

 

f:id:ten0313:20210626101001p:plain

メッシュとマテリアルの設定の概要です。使うマテリアルは好きな物を使うといいと思います。

ten0313.hateblo.jp今回使ったマテリアルはこの記事内で作ったものを流用しています。

 

 輪状のパーティクルがサイズを変えながら上に上がっていくエミッターです。

f:id:ten0313:20210626102638p:plain

エミッタの概要です

かいつまんで解説していきます。

 

f:id:ten0313:20210626102947p:plain

Spawn Rate

SpawnRateを3に設定して、たえまなく連続的にスポーンしつづけるようにします。

 

f:id:ten0313:20210626103354p:plain

GravityForce

Z軸に正の値を入れて重力を上向きにかけました。コレで上昇するようになると思います。

 

f:id:ten0313:20210626105425p:plain

Scale Color

パーティクルの更新にScaleColorを追加しました。透明度を表わすalphaにカーブで数値を入力して色がフェードイン・フェードアウトするようにしました。

 

f:id:ten0313:20210626110151p:plain

Scale Mesh Size

パーティクルのサイズをカーブで更新するようにしています。写真ではスポーンしてから徐々に大きくなるようにしています。

 

 「緊急」の文字がポップアップするものです。

f:id:ten0313:20210626112723p:plain

使ったマテリアルです

内容は画像作成ソフトで作ったものをTextureSampleとか使って動かしたりしています。

どんな形でも大丈夫です。好みのを作ってください(なんならtextureSampleとParticleColorで繋げるだけでもそれらしくなるとは思います)

 

f:id:ten0313:20210626113011p:plain

エミッタの概要です。

内容を説明していきます。NiagaraEmitterのFountainを基に作成します。

f:id:ten0313:20210626113154p:plain

Spawn Rate

スポーンさせる量をこれで設定します。数値を調整することで、スポーンされる量等を変更できたりします。

 

f:id:ten0313:20210626113353p:plain

Cylinder Location

円柱状の場所を指定してパーティクルをスポーンさせるものです。
CylinderHeightとCylinderRadiusで平たい円柱(高さ10、直径100の円柱)を作って、その中にスポーンさせるようにしました。

OffsetでZ軸の数値を変更して、少し高い位置にパーティクル群が出るようにしました。

 

f:id:ten0313:20210626113713p:plain

Scale Sprite Size


Y軸方向の大きさをCurveで指定して、スポーンしてからキルされるまでに パーティクルがピコンと動くようにしました。キー補完を「ユーザー」にして

f:id:ten0313:20210626113832p:plain

出現した時と消える際に少し大きくなるようにすることでちょっとかっこよくしました。

 

f:id:ten0313:20210626113918p:plain

Scale Color

パーティクル上部にこのエミッタが多数出現するので、下にあるパーティクル達は重なって見えにくくなってしまいそうです。対策として、Alphaを少し小さくすることで半透明にしました。このエミッタ同士が重なった時にも効果を発揮するはずです。

 

f:id:ten0313:20210626114157p:plain

Sprite Renderer

最後に表示方法の選択です。AlighnmentとFacingModeを設定することで、プレイヤーのカメラの位置に依存することなく、一定の方向を向き続けてくれるようになります。

 

 これで完成です。

 

なにかわかりにくい事があったり、間違いがあればTwitterのDMとかにおねがいします。


[ この記事はブログ投稿者の憶測や考えによりつくられています。

よって書いてある内容に誤りや言い間違いがあるかもしれません。もし修正したほうがいい場所や「こういった言い方のほうが”ソレっぽい”よ」などがありましたら後に記載してあります、リンク先のツイッターアカウントに教えてくださると嬉しいです:) ]

 

東京高速戦術@VRゲーム制作 (@kousoku_tactics) | Twitter