【Unity】パーティクル徹底解説!基本的なモジュールの使用方法から応用例まで


今回はUnityのパーティクルシステムの使用方法をご紹介します。

本記事でご紹介する内容は以下の通りです。

  • パーティクルの作成方法
  • パーティクルの基本的な使い方
  • パーティクルの応用例
  • スタンダードアセットのパーティクル使用方法

以上の内容をご紹介します。

パーティクルの作成

まずはじめにパーティクルの作成方法をご紹介します。

以下赤枠のGameObject→Effects→ParticleSystemを選択してください。

パーティクルシステム作成

問題なく作成されれば以下のような状態になります。

パーティクル作成完了

以上でパーティクルの作成は完了です。

パーティクルの基本的な使い方

パーティクルシステムコンポーネントには多くのプロパティが存在します。

これらはモジュールと呼ばれるセクションごとに別れており、左のチェックボックスにチェックを入れることでそのセクションのプロパティを有効にすることができます。

ここでは代表的なモジュールである「ParticleSystemモジュール」と「Emissionモジュール」の2つの使い方についてご紹介します。

ParticleSystemモジュール

まずはじめに基本設定であるParticleSystemモジュールの使用方法をご紹介します。

代表的なプロパティの使い方は以下の表をご覧ください。(よく使用するプロパティをご紹介します)

プロパティ 処理
Duration システムが動作する長さ
Looping 有効にすると、システムは Duration の時間の終了時に再び始まり、サイクルを繰り返し続ける
Prewarm 有効にすると、システムが既にサイクルを完全に完了していても初期化される( Looping 有効時のみ動作します)
Start Delay 有効化されてシステムがパーティクルを放出するまでの待機時間(秒単位)
Start Lifetime パーティクルの初期の生存時間
Start Speed 特定の方向へのパーティクルそれぞれの初速
Start Size パーティクルそれぞれの初期の大きさ
Start Rotation パーティクルそれぞれの初期の角度
Start Color パーティクルそれぞれの初期の色
Gravity Modifier 物理マネージャーで設定されている重力の大きさ。値が0の場合は無重力
Simulation Space パーティクルを親オブジェクトのローカル座標で動かすか、ワールド座標で動かすか
Simulation Speed パーティクルのシミュレーション速度
Play on Awake オブジェクトが生成されたときにシステムを自動で動かすかどうか
Max Particle そのシステムの中で一度に存在できるパーティクルの最大値。最大値に達した段階で削除される

以下でよく使用するプロパティの値を変更したときの動きの違いを紹介します。

Duration

以下のDuration値について、左側は「2.00」、右側は「4.00」です。(Loopingを外して実行しています)

Duration比較

以上のようにDuration値の分だけパーティクルが発生し続けます。

Loopingを外さずに実行すると、終了した段階でもう一度次のパーティクルが発生するため、永遠にパーティクルが出現し続けます。

Start Delay

以下のStart Delay値について、左側は「0」、右側は「2」です。

Delay比較

以上のようにStart Delay値の分だけパーティクルの発生が遅れます。

Start Lifetime

以下のStart Lifetime値について、左側は「5」、右側は「0.5」です。

Lifetime比較

以上のようにStart Lifetime値だけ時間が経過するとパーティクルが消滅します。

Start Speed

以下のStart Speed値について、左側は「3」、右側は「10」です。

Speed比較

以上のようにStart Speed値を大きくすると初速が速くなります。

Start Size・Start Color

以下のStart Size値について、左側は「1」、右側は「3」です。

また、右側のStart ColorをRGB値がそれぞれ「0」の黒色に設定してあります。

Size・Color比較

以上のようにStart Size値を大きくするとパーティクルの一つ一つが大きくなります。

また、色を変えることでパーティクルの色を変更することができます。

Gravity Modifier

以下のGravity Modifier値について、左側は「0」、右側は「1」です。

Gravity比較

以上のようにGravity Modifier値を大きくすることで重力を発生させることができます。

Emissionモジュール

次にEmissionモジュールについてご紹介します。

プロパティの使い方は以下の表をご覧ください。

プロパティ 処理
Rate Over Time 1秒ごとのパーティクルの出現数
Rate Over Distance 距離に応じたパーティクルの出現数
Bursts 指定した時間に通常とは異なった量のパーティクルを放射させる( Rate が Time に設定されている時のみ利用可能)

Rate over Time

以下のRate over Time値について、左側は「10」、右側は「100」です。

Rate_time比較

以上のようにRate over Time値を大きくすると1秒あたりのパーティクル出現数が増加します。

(対してRate over Distanceは距離に応じてパーティクルの出現数が変化します)

Bursts

Burstsは以下のように値を設定します。

バースト設定

  • Time:この時間後に発生
  • Count:パーティクルの発生数
  • Cycle:サイクルの回数
  • Interval:インターバルの時間

この数値を以下の右側に設定してあります。

Bursts比較

以上のようにBurstsを設定することで時間ごとに発生するパーティクルを設定することができます。

基本モジュールを使用した応用例

今までご紹介してきたパーティクルシステムの機能を応用することで、以下のような実際のものを作成することが可能になります。

噴水

ここまでの基本機能を使用して噴水を作成してみました。

噴水

雑な作りではありますが、ここまでの機能を使用すればとても簡単に作成することができますのでぜひチャレンジしてみてください。

Unityで池を作成する方法は以下の記事をご参考ください。

池の作り方はコチラ

花火

ここまでの基本機能にさらに応用を加えると花火を作成することができます。

花火応用

この花火はARに対応させたもので、パーティクルの応用例の典型です。

Unityのパーティクルを使用して花火を作成する方法は以下の記事をご参考ください。

パーティクルで花火を作る方法はコチラ

スタンダードアセットのパーティクル

スタンダードアセットに含まれるパーティクルの使用方法をご紹介します。

スタンダードアセットの準備

まずスタンダードアセットを使用するためにインポートしましょう。

以下のようにアセットストアで「Standard Assets」と検索してUnity Technologies社が提供するスタンダードアセットをインポートしましょう。

StandardAssetsImport

するとプロジェクトビューにStandardAssetsが追加されます。

以下赤枠のStandardAssets→ParticleSystem→Prefabsの中に様々なプレハブが存在するので実際にいくつか見てみましょう。

ParticleSystemPrefabs

Afterburner

Afterburner

一つ目はAfterburnerです。

一方向に伸びた炎を表現できるパーティクルです。

飛行機などのジェットエンジンなどにつけるとよりリアルなエンジンを作成できます。

実際に飛行機に取り付けて(位置を調節するだけ)リアル感を出してみました。

Afterburner

このパーティクルを飛行機につけるだけでとても速そうな飛行機になりましたね。

Explosion

Explosion

二つ目はExplosionです。

爆発を表現できるパーティクルです。

飛行機などが撃墜したときなどに同時に発生させるとリアルなシーンを再現できます。

今回はヒット判定と同時に爆発させるという処理は実装しませんが、後日ヒット判定に関する記事を書きますのでその際に使用して見たいと思います。

Smoke

Smoke画像

三つ目はSmokeです。

煙を表現できるパーティクルです。

煙突から出る煙を簡単に再現することができます。

Smoke

煙が黒いのでもう少しグレーにした方がより煙突の煙らしくなるかもしれません。先ほど基本モジュールの使い方で色の設定について説明したように色を変更すれば同じように色を変更することができます。

まとめ

いかがでしたでしょうか。

パーティクルを使用することで様々な応用ができることがご理解いただけたでしょうか。

パーティクルの基本部分を理解した上でスタンダードアセットなどの既存のパーティクルを自分好みのエフェクトに変えることができます。

自分のアイデアをゼロから形にするのではなく、既存のアセットを使用することで圧倒的に時間効率をあげることができます。

積極的に既存のアセットを使用して、自分なりのオリジナリティを表現していきましょう。


この記事はいかがでしたか?よければシェアをお願いします。

Furui