CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Unity】パーティクルシステムについてのFAQ

こんにちは!コチラの記事ではUnityの「パーティクルシステム」についてよく起こる問題について解説していきます。
パーティクルシステムとは
左上の Game Object → Effects →「 Particle System 」を選択することによって、シーン上にパーティクルシステムを作成することができます。

パーティクルシステムとは、沢山の「小さな画像」や「メッシュ」を使って、エフェクト(視覚効果)を作り出すシステムのことです。
この沢山の「小さな画像」や「メッシュ」を「パーティクル」と呼びます。

パーティクルシステムは、各パーティクルの「シミュレーション」をまとめて行うことによってエフェクト(視覚効果)を作り出します。
パーティクルのFAQ
それでは、パーティクルシステムについてよく起こる問題の対処法を、以下解説していきます。
パーティクルを最前面に出す方法は?
デフォルトの状態では、Canvas の Inspector →「 Render Mode 」は「 Screen Space – Overlay 」になっています。
その設定のままだと、必ずUIが最前面にきてしまいます。

そのため、Canvas の「 Render Mode 」を「 Screen Space – Camera 」もしくは「 World Space 」に変更しておく必要があります。

今回は、「 Screen Space – Camera 」に設定して説明していきます。
上記の設定をした上で、パーティクルを最前面に出す方法は2つあります。
- Order in Layer による設定
- Stack による設定
まずは、1つめの「 Order in Layer による設定 」について説明していきます。
パーティクルシステムの Inspector → Renderer →「 Order in Layer 」に、「 Canvas の Order in Layer より大きな値」を入力します。


そうすることによって、パーティクルを最前面に出すことができます。
2つめは、「 Stack による設定」で、パーティクルを最前面に表示させる方法です。
まず、 Main Camera とは別にカメラを用意します。
用意した別カメラを選択し、 Inspector → Camera → Render Type →「 Overlay 」に変更します。

次に Inspector → Rendering → Culling Mask でレイヤーを設定します。
ここでは説明上、Cullig Mask でレイヤーを「 TransparentFX 」に設定しますが、ここは各自で任意のレイヤーを設定してください。

パーティクルシステムを選択し、右上の「 Layer 」を、各自「別カメラの Cullig Mask 」で設定したレイヤーに変更します。

Main Camera を選択し、 Inspector → Rendering → Cullig Mask で、各自が設定したレイヤーのチェックを外して、そのレイヤーを非表示にします。

Inspector → Stack →「 Cameras 」の「+」をクリックし、用意した別カメラを選択すると、パーティクルを最前面に表示できます。

パーティクルシステムが表示できないときは?
パーティクルシステムが表示されないときに確認すべき事項は以下の項目です。
ゲーム画面上でパーティクルが表示されないとき
- パーティクルに設定したレイヤーが非表示になっていないか
シーン上でパーティクルが表示されないとき
- Render Mode や Material が「 None 」になっていないか
- Start Lifetime や Start Size の数値
- Emission や Renderer のチェックが外れていないか
ゲーム画面上でパーティクルが表示されないとき
まず、パーティクルシステムは存在しているが、ゲーム画面上でパーティクルシステムが表示できないときについて説明します。
その場合に考えられる原因は、Main Camera の Rendering → Cullig Mask において、パーティクルに設定したレイヤーのチェックが外れて、非表示になっていることです。
これはパーティクルを最前面に表示させるために「 Stack による設定 」を用いた状況で、Main Camera → Stack → Cameras の別カメラを削除した場合に起こりえます。

その場合はパーティクルに設定したレイヤーのチェックを入れなおすか、パーティクルのレイヤーの各設定を見直しましょう。
シーン上でパーティクルが表示されないとき
次に、シーン上でパーティクルが表示できない場合は以下の点を確認しましょう。
Inspector → Renderer →「 Render Mode 」と、
Inspector → Renderer →「 Material 」が「 None 」になっていないことを確認しましょう。

これらがいずれか一方でも、「None 」になっている場合には、パーティクルシステムが表示されなくなります。
次に、Inspector → Start Lifetime と、Inspector → Start Size の数値を確認しましょう。

Start Lifetime が「限りなく0に近い数字」になっていたり、Start Sizeが「0」になっていたりすると、パーティクルが表示されなくなります。
続いて Inspector → Emission と、Inspector → Renderer のチェックが外れていないかどうかを確認しましょう。

これらがいずれか一方でも、チェックが外れてしまっているとパーティクルが表示されません。
パーティクルシステムが再生できないときは?
ゲームプレイ画面で、パーティクルシステムが再生されないときは、 Inspector → 「 Play on awake 」のチェックが入っているかどうかを確認しましょう。

Play on awake にチェックが入っていない場合、ゲームプレイ画面にパーティクルシステムが存在していても自動的に再生されません。
またシーンビューで複数のパーティクルを同時に再生したいケースに於いては、一方のパーティクルシステムを選択すると、他のパーティクルシステムが再生されません。

その場合は、パーティクルシステムと親子付けしている空の親オブジェクトを選択し、Inspector → Add Component をクリックし、Effects → 「 Particle System 」を選択します。

空の親オブジェクトに「Particle System」を持たせることにより、シーンビューで複数のパーティクルを同時に再生することができます。
シーンビューで複数のパーティクルを同時に再生させる際、空の親オブジェクトの持つパーティクルシステムの Inspector →「 Shape 」「 Emission 」「 Render 」のチェックは外しておきましょう。
パーティクルにトレイルをつける方法は?
トレイルは、Inspector → 「 Trails 」にチェックを入れることで設定できます。
トレイルは、Inspector → Trails → Mode で、「 Particles 」か「 Ribbon 」のモードを選ぶことができます。
「 Particles 」を選択すると、各パーティクルの軌跡を描画するトレイルになります。

一方「 Ribbon 」を選択すると、パーティクル同士を繋げたトレイルになります。

また上の映像のように Inspector → Renderer → Render Mode → 「 None 」に変更することによって、トレイルの基となるパーティクルを表示せずに、トレイルのみを表示させることができます。
パーティクルの当たり判定の設定方法は?
オブジェクトに対して当たり判定をつける場合には、まず当たり判定をつけるオブジェクト(参考動画ではSphereを使用)を選択し、
Inspector → 「 Sphere Collider 」にチェックが入っていることを確認しましょう。

パーティクルシステムの Inspector → 「 Collision 」にチェックを入れ、 Inspector → Collision → Type のドロップダウンで「 World 」を選択します。

そうすることによってオブジェクトをすり抜けていたパーティクルが、オブジェクトに当たるようになります。
また簡易的なコリジョンとしてオブジェクトには当たり判定をつけず、 Plane のみに当たり判定をつける場合は、
パーティクルシステムの Inspector → 「 Collision 」にチェックを入れ、 Inspector → Collision → Type のドロップダウンで「 Plane 」を選択します。
Typeの下にある、List is Emptyの「+」をクリックし、None(Tranceform)と入っているところに、Planeをドラッグアンドドロップで持っていきます。

そうすると、Planeのみに当たり判定をつけることができます。
パーティクルを追従させる・させないの設定方法は?
パーティクルを追従させたい場合は、 Inspector → Simulation Space のドロップダウンが「 Local 」になっていることを確認しましょう。

反対に、パーティクルを追従させずに、軌跡を描くようにしたい場合は、 Inspector → Simulation Space のドロップダウンを「 World 」に変更しましょう。

パーティクルを真ん中に集まるようにする方法は?
パーティクルが真ん中に向かって集まるようにするには、まず Inspector → Shape → 「 Shape 」 のドロップダウンで「 Sphere 」を選択します。
次に Inspector → Velocity over Lifetime にチェックを入れます。
そして Inspector → Velocity over Lifetime →「 Radial 」に、マイナスの数値を入力することによって、パーティクルが真ん中に集まるようになります。

数値は Inspector →「 Start Speed 」の値によって変化するので、各自で調整してみてください。
まとめ
- パーティクルシステムとは、各パーティクル(「小さな画像」や「メッシュ」)の「シミュレーション」をまとめて行うことによってエフェクト(視覚効果)を作り出すシステムのことである。
- パーティクルを最前面に出す方法
- Order in Layer による設定
- Stack による設定
- パーティクルシステムが表示されないときに確認する事項
- パーティクルに設定したレイヤーが非表示になっていないか
- Render Mode や Material が「 None 」になっていないか
- Start Lifetime や Start Size の数値
- Emission や Renderer のチェックが外れていないか
- パーティクルシステムが再生されないとき
- 「 Play on awake 」のチェックが入っているかどうかを確認する
- シーンビューで複数のパーティクルを同時に再生したい場合は、空の親オブジェクトにパーティクルシステムを持たせる方法がある。
- トレイルは、「 Trails 」にチェックを入れることで設定できる。
- パーティクルの当たり判定の設定は、「 Collision 」を設定する
- パーティクルを追従させる・追従させないの設定は「 Simulation Space 」で調整できる。
- パーティクルを真ん中に集まるようにするには、Velocity over Lifetime →「 Radial 」に、マイナスの数値を入力して調整する。