今回はUnityの基本機能であるパーティクルシステムを使って打ち上げ花火をつくる方法を紹介します。

パーティクルシステムとは
パーティクルと呼ばれる多くの小さな画像やメッシュを擬態してレンダリングし、視覚効果を生み出します。
https://docs.unity3d.com/ja/2019.4/Manual/ParticleSystems.html
というものです。パーティクルシステムを使うことでさまざまな表現が可能になります。
たとえば、火や煙、液体など、1つの3Dオブジェクトなどでは難しい表現が可能になります。
基本的なつくり方を覚えたら、パラメータの調節で自分だけの花火をつくることも可能です!
ぜひつくり方を覚えてみてください!
▼ 実際の手順については動画でもご覧いただけます!
サンプルパッケージ
実際にこの記事でつくる打ち上げ花火の UnityPackageを配布します。
記事を見ながら、アイテムの構成を確認してみてください。
「炸裂する花火」のベースとなる「放出されるパーティクル」をつくる
打ち上げ花火は、「打ち上げられる花火」と「炸裂する花火」の2つのパーティクルシステムを組み合わせることでつくることができます。
まず最初は炸裂する花火のベースとなる「放出されるパーティクル」からつくっていきましょう。

- Hierarchy を右クリックして「Effects → Particle System」からパーティクルシステムを作成します。

作成したパーティクルシステムをHierarchyから選択して Inspector を見ると下記のようになっていると思います。
この設定を変更して放出するパーティクルをつくっていきます。

- まず花火の炸裂は一度きりにしたいため Looping のチェックマークを外します。
- 次に生成されたパーティクルがオブジェクトの親子関係に依存せずに動くように Simulation Space を World に変更します。
- また、火の粉の大きさをオブジェクトの拡大・縮小から変更できるようにするために、 Scalling Mode は Hierarchy を選択します。
※Simulation Space はパーティクルを親オブジェクトのローカル空間でアニメーションするか、ワールド空間でアニメーションするか、または選択したカスタムのオブジェクトと一緒に動くのかを決定します。
※Scaling Mode はパーティクルの大きさの変更方法を決定します。Local はパーティクルシステムのトランスフォームスケールのみを適用し、親はすべて無視します。Shape はスケールをパーティクルの開始位置に適用し、サイズには影響しません。https://docs.unity3d.com/ja/2019.4/Manual/PartSysMainModule.html

次に花火の火の粉の数を決定します。
- Emission モジュールにチェックを入れて選択します。
- 時間経過で次々とパーティクルが 生み出されないようにするため、 Rate over Time を 0 に変更します。
- Bursts の欄にある「+」マークを押してリストを追加します。Count に値を入力して、一度に放出するパーティクルの数を設定します。今回はCount の値を 300 に変更します。

これで、まずは炸裂する花火のベースとなる「放出されるパーティクル」が完成しました。

放出されるパーティクルの形状を設定して、炸裂する花火をつくる
次は先ほど作成したパーティクルをよく見る花火の形である球状に放出されるように整えて、炸裂する花火をつくっていきます。設定は非常に簡単です。

- Shape モジュールの Shape を Sphere に選択します。
これだけで球状にパーティクルが放出されるようになります!

火の粉の拡散するスピードも調整しておきましょう。
- Limit Velocity over Lifetime で火の粉が生成されてから徐々に速度が落ちるようにします。
- Speed右横の「▼」マークを選択し、「Curve」を選択してください。右端のプリセットのカーブを選択します。
- 赤線の左端の数字を 5 に設定してください。
- また、火の粉を空気抵抗を受けて減速させるためにDampen の値を 0.25 に設定します。

再生してみると、ちょっと花火っぽくなってきましたよね?

色を設定して、花火の見映えをよくしよう!
このままだと色がない味気ない花火になってしまうので、好きな色をつけて華やかな花火にしてみましょう!

- Color over Lifetimeにチェックを入れて、モジュールを開いてください。
- Colorのバーの部分を選択すると「Gradient Editor」が開きます。ここで色を設定していきます。
- Mode を Blend にすると時間経過によって色を変化させることができます。
- お好みの色を設定してください。Modeの下にある色が表示されたバーの下を触ることで色の設定ができます。
- パーティクルの終了時間に近づくにつれて透明になるように、Alpha の値を左は 255 にして右で 0 になるようにします。Modeの下にある色が表示されたバーの上を触ることで Alpha の設定ができます。

これで炸裂する花火の完成です!

「打ち上げられる花火」と「炸裂する花火」を組み合わせて、打ち上げ花火をつくる
最後に「打ち上げられる花火」を作成して、ここまでで作成した「炸裂する花火」と組み合わせて完成です。

まずは「打ち上げられる花火」を作成していきます。
- Hierarchy を右クリックして「Effects → Particle System」からParticle System を作成します。
- 今度はある程度間隔を置いて発射されるようにEmission の Rate over Time を 1 に変更します。

いよいよ「打ち上げられる花火」と「炸裂する花火」を組み合わせていきます!
- Sub Emitters モジュールにチェックを入れます。サブエミッターは、ある特定の段階のパーティクルの位置で追加のパーティクルを生成するものです。
- パーティクルが消える時に花火を炸裂させたいため、生成タイミングを Death に変更します。
- 最後にParticle の欄に先ほど作成した花火のパーティクルをドラッグ・アンド・ドロップします。

設定ができたら、Hierarchy にある Particle System を選択してみましょう!
実際にどう動くのか確認できます。


上手くいきましたね!
その他にも光の軌跡を表現できる Trail モジュールなど組み合わせやパラメータの設定次第で色々な表現が可能になります。
より詳しく知りたい方はこちらのUnity マニュアルを参考にしてください。