Unity ParticleSystemで打ち上げ花火(Unity5.5対応)

Unityの基本機能の一つ、パーティクルシステムを使って
打ち上げ花火を作成します。
今回は最低限の「ヒュルルル」「パーン」を実装してみます。
***
[Unity5.5対応]部分を追記しています。
***
* CreateEmptyで空のGameObjectを作成し、
AddComponentで
Effects>ParticleSystemを選択します。

![001.png](https://qiita-image-store.s3.amazonaws.com/0/59911/6e6973ad-c8eb-a5f2-110a-9cb25c6f8bdb.png)

* この時点で花火の「パーン」っぽいものが表示されます。

***
[Unity5.5]では初期マテリアルがNoneになっているのでDefaultーParticleをセットします。
![ss1.png](https://qiita-image-store.s3.amazonaws.com/0/59911/156da13f-557a-7a81-818d-3c24673fe993.png)

![ss2.png](https://qiita-image-store.s3.amazonaws.com/0/59911/66211d96-7399-4959-8cc7-a558716891e2.png)

***

![002.png](https://qiita-image-store.s3.amazonaws.com/0/59911/cc96ef63-2f40-a54a-073c-6cce298ae5bb.png)

* ParticleSystemのパラメータをいくつか変更してみます。

Duration
エフェクトの生成期間です。
「パーン」は生成期間としては一瞬なので0を指定してみます。
0を入れても0.10になりました。最低生成時間は0.10のようです。

Looping
エフェクトが繰り返すかどうかの指定です。
「パーン」は繰り返さないのでオフにします。

![003.png](https://qiita-image-store.s3.amazonaws.com/0/59911/c4c267e8-0ba7-3eb0-d5a8-b0f396670603.png)

Emission
パーティクル（エフェクトの粒）発生設定です。
Rate
１秒あたりのパーティクル発生数です。
とりあえず１００にしてみます。

![004.png](https://qiita-image-store.s3.amazonaws.com/0/59911/32eb9cd0-5d22-a841-4019-fec721d9e90d.png)

* ParticleSystemをAddしたGameObjectを選択すると
Scene上にParticleEffectのウインドウが表示されます。
Stopを押してエフェクトを止めてからSimulateを押すと
「パーン」が表示されます。

![3_2.png](https://qiita-image-store.s3.amazonaws.com/0/59911/f778b738-edbd-cad0-b653-f94939073b8a.png)

ただ、この時点ではパーティクルが１０個くらいしか出ていません。
これは、生成期間０．１秒を指定しているため、
１秒間に表示される数の1/10しか生成されないためです。
また、内部的には一度に10個表示されているのではなく、
0.01秒で1つずつ連続的に生成されています。

* ここでBurstsの横の＋を押して、
Time0.00、Partickles100と入力します。

![004.png](https://qiita-image-store.s3.amazonaws.com/0/59911/32eb9cd0-5d22-a841-4019-fec721d9e90d.png)

* もう一度SceneでSimulateを押すと、今度は100個のパーティクルが
一気に出るようになりました。

***
[Unity5.5]ではTrailを使用してより花火っぽい感じを出すことができます。

・PerticleSystemプロパティの右端にある小さな+をクリックし、Trailsを追加します。
![2016-12-05_155935.jpg](https://qiita-image-store.s3.amazonaws.com/0/59911/cf6a930a-fe81-d799-f660-77bff3144563.jpeg)

・Trailsも初期マテリアルがNoneになっているので、こちらもDefault-Particleを追加します。
![2016-12-05_160333.jpg](https://qiita-image-store.s3.amazonaws.com/0/59911/79ef11ff-9e1a-fd86-413c-d37a6c5eff33.jpeg)
***

ただ、Scene上でよく見るとエフェクトは一方向にひろがっています。

![005.png](https://qiita-image-store.s3.amazonaws.com/0/59911/181f733d-b735-e2c0-9eeb-597c1fd8e702.png)

* ここでShapeを開き、中のShapeをCone->Sphereに変更します。
もう一度SceneでSimulateを押すと、今度は100個のパーティクルが
球面状に出るようになりました。

ただ、生成されたエフェクトが最後にパッと消えるのが少し不自然です。

そこで、ColorOverLifeTimeにチェックを入れます。

ColorOverLifeTimeを開き、Color設定バーをクリックします。
![006.png](https://qiita-image-store.s3.amazonaws.com/0/59911/63cd254e-c9af-e8ef-bb8b-86501fc1eb80.png)

* GradientEditorが開くので、カラーゲージの上部をクリックして
中間あたりにアルファ（透明度）のキーポイントを作成し、
一番右側のキーポイントのアルファを０にします。
これでふわっと消えるようになりました。
ひとまずGameObject名をexplosion等に替えておきます。

***
[Unity5.5]Trailだけ表示したい場合はRenderModeをNoneにします。

![2016-12-05_160628.jpg](https://qiita-image-store.s3.amazonaws.com/0/59911/04884f2f-59a6-e23b-6ae7-a1a858288d10.jpeg)

![2016-12-05_160703.jpg](https://qiita-image-store.s3.amazonaws.com/0/59911/b62e1896-93df-73f4-ba42-5f8ef5991533.jpeg)

Trailsプロパティ内にもLifeTime(ベースのLifeTimeを1としたときの割合)、Color over Lifetime等の項目があるので調整しつつセットします。

![2016-12-05_161201.jpg](https://qiita-image-store.s3.amazonaws.com/0/59911/ce9cc774-6cf0-f13c-4846-14efe2083d74.jpeg)

![2016-12-05_161733.jpg](https://qiita-image-store.s3.amazonaws.com/0/59911/c2d34118-aa86-71e6-6f51-b38beaf09307.jpeg)

***

続いて「パーン」の前の「ヒュルルル」を作ります。
CreateEmptyでもう一つ空のGameObjectを作成し、
名前をseed等にしておきます。

ParticleSystemのパラメータをいくつか変更します。
Dulation0.10
LoopingOff
StartLifeTime2
Emission>Rate1
Emission>Bursts>Time0,Particles1

これでパーティクルが１つ発生しますが、移動方向が奥方向です。
なのでTransform>Rotation>Xを-90にして上向きに移動するようにします。

![007.png](https://qiita-image-store.s3.amazonaws.com/0/59911/b15bf98f-2029-4fd2-6006-a74eee451512.png)

ここでSubEmittersにチェックを入れ、Deathの右側の◎しるしをチェックします。
先ほど作成したexplosionを選択すると、
「ヒュルルル」が消滅したときに「パーン」が表示されるようになります。

![008.png](https://qiita-image-store.s3.amazonaws.com/0/59911/19f2f9e9-a685-8f10-7e44-f1594adf5c20.png)

※このときエフェクトの親子関係をつけるか聞かれます。
YESを選択すると親子関係があることが分かりやすくなります。

![009.png](https://qiita-image-store.s3.amazonaws.com/0/59911/678818f8-7239-1547-68cf-a6f2923e53f0.png)

![010.png](https://qiita-image-store.s3.amazonaws.com/0/59911/d88e98fc-7774-aa66-8a2b-839af3b9e338.png)

以上で、「ヒュルルル」「パーン」の基礎ができました。

***
色やタイミングを調整して完成です。

***
[Unity5.5]カメラにImageEffectをアタッチすることで、よりきれいに見せることができます。

・Assets > Import Package > Effects をインポートします。
![2016-12-05_162155.jpg](https://qiita-image-store.s3.amazonaws.com/0/59911/e5ab6d22-4610-e2e1-4a0c-1dec50cc3e6e.jpeg)

・カメラを選択しAdd Component > Image Effects > 好きなエフェクトを選びます。たとえば、
・Bloom and Glow > Bloom　を追加すると、画面にきれいなブルームがかかります。
・Color collection curve　を追加すると、画面が締まった感じになります。
![2016-12-05_162801.jpg](https://qiita-image-store.s3.amazonaws.com/0/59911/82ada367-a6c0-7329-68cd-7f9648af6b67.jpeg)
![2016-12-05_163108.jpg](https://qiita-image-store.s3.amazonaws.com/0/59911/b7ea8fb2-923f-a3a2-f8ce-8db4aea498ab.jpeg)


***
[Unity5.5][見本動画](https://youtu.be/JccuNBhUN3M)
![2016-12-05_164030.png](https://qiita-image-store.s3.amazonaws.com/0/59911/67378e68-7860-a939-9757-dde98a5b7283.png)

***
[見本動画](https://youtu.be/6GvMOl9jYa8)
![012.png](https://qiita-image-store.s3.amazonaws.com/0/59911/7a6d9589-ebba-fe0c-9fea-37c96233b0a9.png)


***
[花火に音をつける](http://qiita.com/ELIXIR/items/549b2688d765fdcb3364)にはこちら