テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】パーティクルの生成間隔やサイズや速度をランダムにしたり、ある程度の法則性をもたせたりする方法

f:id:tsubaki_t1:20160723001324g:plain

今回はパーティクルを生成する際、サイズや回転速度や移動速度をある程度ランダムにしたり、ある程度の法則性に従い制御する方法についてメモします。

ランダムではないパーティクルの値は変化しない

御存知の通り、パーティクルシステムの生成(Emit)やサイズ・回転・速度はParticleのコンポーネントから制御します。設定できる項目は、色々です。

f:id:tsubaki_t1:20160722232538j:plain

さて、例えばStart Speedで5と設定すれば、パーティクルは5の速度で移動します。常に。これは例えば一括で生成した場合、同じように扇状に広がることを意味しています。時間差で生成すればもう少しバラけるのですが、場合によっては宜しくないかもしれません。

f:id:tsubaki_t1:20160722233059g:plain

パーティクルの値をある程度ランダムにする

パーティクルの値をある程度ランダムにしたい場合、Random Between Two Contentsを使用します。このパラメータを使用すると、生成するパーティクルの範囲を指定する事が出来ます。

f:id:tsubaki_t1:20160722233456j:plain

例えば下のGifでは、Start Speedを1~5に、Start Sizeを0.2~0.5に設定しています。そうすると生成タイミングが同一のパーティクルであっても、バラバラな感じで持ち上がるようになります。

f:id:tsubaki_t1:20160722233529g:plain

一定間隔ごとに生成するパーティクルのサイズを変化させる

もう一つ面白い機能が、時間軸にそって生成の法則性を決める機能です。
例えば下のGifアニメでは、大きさの異なるパーティクルを交互に出現させています。

f:id:tsubaki_t1:20160722234538g:plain

この手法のキーとなるのが、Duration(持続)とCurveと名前のつくパラメータです。
Durationは1サイクルの長さを決めるパラメータです。Curveを使用する場合、Durationが横軸となります。縦軸は大きさです。

つまり、下の例では1秒毎にサイズの大きなパーティクルを生成するようにカーブを設定しています。そうすると、上のGifアニメのように、1秒毎に大きさの異なるパーティクルが生成される訳です。

f:id:tsubaki_t1:20160722234930j:plain

ちなみに生成間隔の制御はRateではなくBurstsで制御。

f:id:tsubaki_t1:20160722235238j:plain

制御されたランダム

Curveだと大きさは時間軸に依存するだけになります。ので、その範囲でランダム値を与えたい場合はRandom Between Two Curveを使用します。

f:id:tsubaki_t1:20160722235723j:plain

上手く使うと、トップのGifアニメのような、一定間隔で吹き出す噴水的な奴も作れたりします。

関連

tsubakit1.hateblo.jp

tsubakit1.hateblo.jp