はじめに
Unity上で形のあるものを表現するにはゲームオブジェクトが適しているが、形がないもの(液体や炎やビームなど)をゲームオブジェクトで表現するのは難しい。こういった不定形のものを表現するのに適したシステムがParticle Systemである。このParticle Systemだが、設定できる要素が多くどうすればよいのか忘れがちなので、特に重要そうなMainモジュール、Emissionモジュール、Shapeモジュールについてまとめてみた。
Particle System のモジュールとは
Particle Systemの設定は多岐にわたるので、モジュールと呼ばれる区分ごとに設定をするようになっている。例えば、全般的な設定はMainモジュール、放出されるパーティクルの個数はEmissionモジュールをいじることになる。このうち、Mainモジュールは必ず適用されるが、逆に言えばその他のモジュールは必ずしも有効にする必要はない。
Mainモジュール
このモジュールではParticle Systemの寿命やループ設定など全般的な設定をすることが出来る。
Duration
Particle Systemが再生されてからパーティクルを放出し続ける時間
Looping
Particle Systemの再生をループさせるかどうか
Start Delay
Particle System が再生されてから実際にパーティクルを放出し始めるまでのオフセット。使いどころがいまいちわからない
Start Lifetime
(Particle Systemではなく)個々のパーティクルのライフタイム(寿命)。Durationの時間とは独立しており、あくまでパーティクルが生成されてからの寿命を表す。例えば、DurationとStart Lifetimeが共に5.00秒の場合、全てのパーティクルが消滅するのは再生から10.0秒後となる。
Start Speed
パーティクルの生成時の速さ(速度ではない)。速度の向きはShapeモジュールで設定する。
3D Start Size
Start Size の値をxyz軸ごとに指定するかどうか
Start Size
パーティクルの生成時のSize
3D Start Rotation
Start Rotation の値をxyzごとに指定するかどうか
Start Rotation
パーティクルの生成時のRotation
Start Color
パーティクルの生成時のColor
Gravity Modifier
パーティクルの質量?
単位はkg?
0にすればパーティクルは重力の影響を受けない
Simulation Space
Localにすると放出済みのパーティクルでもParticle System を動かすと追従するようになる。Worldにすると放出済みのパーティクルがParticle Systemに追従しない。おそらくWorldにすることがほとんど。ビームサーベルのようなものをParticle System で作るならLocalのほうが良いかも。Customはよくわからん。
Play On Awake
オブジェクト生成時にParticle Systemを再生させるかどうか
Max Particles
このParticle Systemが含むことが出来るパーティクルの最大数。これを超えるとパーティクルの一部が自動的に削除される
その他の項目
おそらく自分でいじることは当分ないので保留
Emissionモジュール
このモジュールではParticle Systemから放出される単位次元ごとのパーティクルの数(Rate)を設定することが出来る。単位次元には時間か距離を指定できる。
Rate Over Time
単位時間ごとに放出されるパーティクル数
Rate Over Distance
Particle System が付与されたオブジェクトの単位移動距離ごとに放出されるパーティクル数
Bursts
上の2つの項目とは異なり、(デルタ関数のように)瞬間的にパーティクルを放出するイベント
Rate Over Time とRate Over DistanceとBurstsは共存させることが出来る。言い換えると、Burstsだけを有効にしたい場合は、ほかのRateを0にしてやる必要がある。
- Time...Particle System が再生されてから最初のショットをし始める時刻
- Count...ワンショットで放出されるパーティクル数
- Cycles...Burstsを何回かり返すか
- Interval...Burstsを2Cycles以上にした時の、ワンショットごとの間隔
- Probability...パーティクルが生成される確率
例えば、次の図のようにBurstsを設定しよう そうすると、次のようにパーティクルが放出される
動画だと少しわかりにくいが、2サイクルのBurstsと3サイクルのBurstsが同時に再生されている。
マシンガンのようなオブジェクトにはRate Over Time、ショットガンのようなオブジェクトにはBurstsを使うのが良いか?
Shapeモジュール
このモジュールではShapeやテクスチャを指定することでパーティクルの生成位置や速度の向きを設定することが出来る。生成位置や速度の向きをランダムにする必要がない場合(ライフルの銃口から発射される弾丸など)は、このモジュールを有効にする必要はない。パーティクルの速さはMainモジュールで指定するのに、速度の向きはShapeモジュールで決まるのがすこし気持ち悪いが、Shapeモジュールは必ず有効にするとも限らないのでそういう仕様になっているのだろう。
Shape
パーティクルの初速度の向き、生成箇所のもとになる形状
Shapeごとにradiusやarcなどの項目が現れるが、見たままの意味なので適当にいじればいいと思う。
Aligned To Direction
チェックが入っていなければBillboardはカメラ方向をLookAtする。
チェックが入っていると、Billboardがパーティクルの初速度に直行する面になる。
あくまでパーティクル生成時のBillboardの向きを表していて、Rotation Over Lifetimeと共存させることが出来る。
以上、自分に理解できた範囲でのParticle Systemのメモを書いてきましたが、『Unityゲームエフェクトマスターガイド』という本により詳しく書いてあります。 とても参考になるおすすめの本です