【Unity】Particle SystemのRate over Distanceの意味【初心者向け】

はじめに

UnityのPartcile Systemには、オブジェクトの移動距離に応じてパーティクルを生成する、Rate over Distanceという機能があります。
Rate over Distance を使うにあたって、ひとつ気付いたことがあり、初心者の方は意外と引っ掛かるかも知れないけど、Particle Systemを使うにあたって割りと大事な考え方が含まれている気がしたので、初心者の僕ですがnoteに書こうと思い立ちました。
そんな僕はすっかりRate over Distanceの存在を忘れていて、今ゲーム制作で参加させてもらっているチームの他のメンバーの方から「それなら距離毎にパーティクルを生成するやつ使えばいいのでは?」と指摘をいただいて、あ!そう言えばそんな機能があった!と思い出したくらいです。これはダサい。
Unityの公式ドキュメントには

これは、オブジェクトの動きによって実際に作成されるパーティクル(たとえば、ダートトラック上で車の車輪から立ち上る埃)をシミュレートする場合に非常に役立ちます。

https://docs.unity3d.com/ja/2018.4/Manual/PartSysEmissionModule.html

と記載があり、まさしく走っているキャラクターの足元から埃を出すために作っていたので、なんで気付かんかってーん!と身悶えしました。

前置きが長くなりましたが、以下、本題です。

Rate over Distanceを使う時はLoopingをオンにする

Rate over Distanceを使う時はLoopignをオンにするように注意してください。
UnityのParticle Systemを使いこなしている人からすると、なにこんなことでドヤってんねん、って話だと思います、すいません。
でもParticle Systemを使い始めた人には割りと大事なことなのかな~と思うのです。

LoopingはDurationを繰り返す

Loopingをオンにすると何が起きるかと言うと、Durationの時間を繰り返すということ。

LoopingはDurationを繰り返す

Durationは、そのパーティクルシステムが機能する時間を決めるパラメータです。扱う概念は時間です。
Rate over Distanceは"距離に応じてパーティクルを生成する"ので、扱う概念は距離です。
時間と距離、という違う概念を同時に扱うのでちょっとこんがらがると思いますが、Rate over Distanceが機能するのも、Durationの時間だけということです。
上の画像の場合は、Loopingをオフにすると、このオブジェクトがシーンに登場してから5秒間しか、距離に応じたパーティクルの生成をしてくれない、ということになります。
意図して5秒間だけそうしたいのであれば何も問題ないですが、公式ドキュメントの例にあるような車の埃を表示したい場合は、Loopingをオンにする方がいいでしょう。

おわり

この記事の伝えたいことはたったこれだけです。
ここから先は、補足です。
あくまで初心者の方向けの内容です。

DurationとLifetimeとEmitter

Durationはそのパーティクルシステムが機能する時間を決めるパラメータですが、Start Lifetimeは、パーティクルシステムで生成されるひとつひとつのパーティクル(粒子)の寿命を決めます。
DurationよりもStar Lifetimeが長くても成立します。
じゃあどうやってパーティクルを生成するの?と言うと、Emitterモジュールで生成する数を、Shapeモジュールで、生成する位置と方向を決めることになります。
Shapeについて語るともっと長くなっちゃうので、今回は控えますが、これらを含めた他のモジュールが機能するのはDurationの間だけということになります。
LidetimeよりもDurationが短くても成立するのは、Emitterモジュールによるパーティクルの放出をする時間がDuratioeで決められていて、放出されたパーティクル自体をどれだけ表示させるかをLifetimeで決めているから、ということになります。
この辺りの機能を理解することで、更にパーティクルシステムを使いこなせるようになると思います!

この記事が気に入ったらサポートをしてみませんか?