😺

Unity Particle System 

に公開

参照サイト

Main

Duration

Particle Systemが実行する時間の長さ。
ループなしの場合。
Durationが5なので、5秒経ったらParticle Systemが発生しなくなるのが分かる。
https://youtu.be/1SFu81P3E2Q
ループありの場合。
ループありであるため、Particle Systemがずっと発生していることが分かる。
https://youtu.be/6EIfLvONmSY

Looping

Durationで設定した時間が過ぎたら何回も繰り返す。
詳しくは上のループあり動画を参照。

Prewarm

Prewarmをオンにすると、パーティクルが再生された状態でエフェクトが発生する。
Prewarmなし
https://youtu.be/pILQIRjj8Hk
Prewarmあり
https://youtu.be/Myu39XjO5wo

Start Delay

Particle Systemが発生する時間を遅らせることができる。

Start Lifetime

パーティクルの消える時間を指定できる。

Start Speed

パーティクルの初速を指定できる。
マイナスを指定すると反対になる。
また、0にすると周りに留まっているエフェクトになる。
https://youtu.be/LFwoWLQmlxQ

3D Start Size

xyz軸のに初期サイズを指定できる

Start Size

初期サイズを指定できる

3D Start Rotation

xyz軸の初期角度を指定できる。
https://youtu.be/HYryGhGlS1o

Start Rotation

初期角度を指定できる。
https://youtu.be/aMy4SfAa9U4

Flip Rotation

反対方向に角度を調整できる。
値が上がるにつれて反対角度になるエフェクトが多くなる。
0→そのままの角度
1→完全に反対角度
0.5→そのまま角度と完全に反対角度が半々の割合
0

0.5

1

Start Color

最初の色を設定できる。

Gravity Modifier

重量を設定できる。

Simulation Space

Local
親オブジェクトの動きに合わせてエフェクトも追従する
https://youtu.be/Kt3BUORUA7s
World
親オブジェクトの動きに合わせてエフェクトも追従せずにそのままとどまるような挙動になる。
https://youtu.be/wvkFUKvCkt0
Custom
親を設定して、Worldのような挙動になる。
https://youtu.be/9G9Buq1EbHk

Simulation Speed

Particle System全体の速度を指定できる。
分かりやすくいうと動画サイトの倍スピードのイメージ。
なので1だとそのまま速度、2だと2倍の速度になる。
Simulation Speedが1
https://youtu.be/J-e4sl2keg0
Simulation Speedが10
https://youtu.be/NXVY5inYLUk
Color over LifeTimeで色を変えて実験してみたが、10の方が早く色が変わっていることが分かる。
なお、0だとストップする。
https://youtu.be/WIPglHhwT58

Delta Time

TimeScaleに依存するか設定できる。
Scaled→依存する
Unscaled→依存しない
https://youtu.be/snKfFDgIVZQ

Scaling Mode

Hierarchy→親のスケールが変化に合わせてエフェクトの大きさも変わる
Local→親のスケールが変化に合わせてエフェクトの大きさは変わらない
Shape→親のスケールが変化にShapeの範囲が変わるが、エフェクトの大きさは変わらない。
https://youtu.be/VEnEkDJ2AQE

Play on Awake

シーンの開始時にエフェクトを発生させるか、スクリプト上で制御するかを設定できる。
オンだとシーン開始時にエフェクトを発生させる。
オフだとスクリプト上で制御する。

Emitter Velocity Mode

パーティクル システムが、Inherit Velocity モジュールと Emission モジュールで使用される速度を計算する方法を選択します。システムは、Rigidbody コンポーネント (存在する場合) を使用して、または Transform コンポーネントの動きを追跡して速度を計算できます。Rigidbody コンポーネントが存在しない場合は、デフォルトで Transform コンポーネントが使用されます。
と公式ドキュメントで記載されているが、いまいち挙動が分からない。

Max Particles

エフェクト最大数を設定できる。
Max Particlesを超えたエフェクトは発生しない。
https://youtu.be/YZhIm6-s8Jw

Auto Random SeedとRandom Seed

Auto Random Seedがオンに時は、エフェクトが再生するとき毎回ランダムなエフェクトが発生する。
オフの場合Random Seedの値によってエフェクトのランダム性が変わる。
Random Seedが同じだと同じエフェクトが発生する。
https://youtu.be/S6aWnwwYxuI

Stop Action

エフェクトが消えた際のParticle Systemの挙動を制御できる。
なお、Loopingがオンの場合はこの設定は無効になる。
None→何もしない
Disable→Particle Systemが非表示になる
Destroy→Particle Systemが削除される
Callback→OnParticleSystemStoppedのcallbackで制御できる。
https://youtu.be/CdMEpbPIUcg

Culling Mode

エフェクトがカメラ外の時に発生させるか制御できる。
Pause→エフェクトを発生させない
Always Simulate→エフェクトを発生させう。
Automatic→ループするシステムは Pause を使用し、他のすべてのシステムは Always Simulate を使用します。
と公式ドキュメントで記載されているが、確認したところそのような挙動にならなかった。
Pause And Catch-up→公式ドキュメント見てもよくわからなかった。
https://youtu.be/ix3D-GO7XZw

Ring Buffer Mode

Max Particlesに達したときの挙動を制御できる。
Disabled→ Max Particlesの値に達すると、生存期間までエフェクトは発生しない。
Pause Until Replaced→Max Particlesの値に達すると、古いエフェクトを削除され新しくエフェクトが発生する。
Loop Until Replaced→→Max Particlesの値に達すると、新しくエフェクトが発生する。
https://youtu.be/B0SV9Bw4BhU

Emission

Rate over Time

1秒間に何個エフェクトを発生させるか設定できる。
5と設定した場合、1秒間に5個のエフェクトが発生する。

Rate over Distance

移動したユニット距離毎に放出されるパーティクルの数を設定できる。
https://youtu.be/XaA1gFKise4

Bursts

Time
→開始パーティクルの開始時間を指定
Count
→パーティクルの数を指定
Cycles
→繰り返し回数
Interval
→繰り返しの時間間隔
Probability
→パーティクルが発生する確率。
0-1が設定でき、1にいくにつれてパーティクルが発生する確率が上がる。

例えば下記の動画だと、
Timeが0
Countが2
Cyclesが3
Intervalが3
であるので
0秒→2
3秒後→2
6秒後→2
といった具合になる
https://youtu.be/LRLTnIF9tcI

Shape

ConeでShape以外を検証している。
他のShapeによって差分の項目があるが大体同じ。

Shape

エフェクトが発生する形状を指定できる。
Sphere
https://youtu.be/u_V-w6RNjUc
Hemisphere
https://youtu.be/Q7gQI15SWQg
Cone
https://youtu.be/sqYaPFbGdJ4
Donut
https://youtu.be/2dEpcy2nGfQ
Box
https://youtu.be/TmT4YLaNy5M
Mesh/MeshRenderer/SkinnedMeshRenderer
指定したメッシュの形状からエフェクトを発生
https://youtu.be/fPfTL-GxzsA
Sprite/Sprite Renderer
指定したSpriteの形状からエフェクトを発生
参照サイト
https://youtu.be/k1_EdmJ6yGM
Circle
https://youtu.be/ZiU5Uqvknaw
Edge
https://youtu.be/ubZPPeSMYWQ
Rectangle
https://youtu.be/zpaH52u_wqQ

Angle

エフェクトが発生する角度の範囲を指定できる。
https://youtu.be/a6tWvovpI14

Radius

Shapeの範囲を指定できる。
https://youtu.be/Skvbq-yJBwM

Radius Thickness

Radius内のエフェクトの範囲を指定できる。
値が大きくなるほどエフェクトの範囲が広くなる。
0だと底面の端からエフェクトが発生する。
https://youtu.be/UdVkaxHCbmc

Arc

指定した角度のみにエフェクトが発生。
https://youtu.be/jZfB0fj1PQQ

Mode

エフェクトの発生の仕方を設定できる。
Random
→ランダムに発生する。
Loop
→時計周りに順番に発生する。
Ping-Pong
→時計周りに順番に発生した後、その後反時計周りに発生する。その後は同じような挙動。
Burst Spread
→パーティクルが不均等に固まってしまうこともありうるRandomよりも、パーティクルを均等に広げることができる。EmissionのBurstで組み合わせると効果的。
https://youtu.be/OCHmxhrhnsU

Spread

発生するエフェクトの間隔を指定できる。
値が大きいほど間隔は広くなる。
https://youtu.be/2Dp5WmalIEM

Speed

発生するエフェクトの速さを指定できる。
値が小さいほど早くエフェクトが発生する。
https://youtu.be/dBCuxKBS75E

Emit from

エフェクトが発生する位置を指定できる。
Base
→底面からエフェクトが発生する
Volume
→Shape全体からエフェクトが発生する
https://youtu.be/lBIEY7RbB6M

Length

Emit fromがVolume指定した場合に、利用できる。
Shapeの範囲を指定できる。

Texture

各RGBAごとにテクスチャを指定してエフェクトが発生する範囲を制御できる。
一応実験してみたが、テクスチャに沿ってエフェクトの範囲が制御されているが何故か若干はみ出している。
https://youtu.be/x95ZhAzbPH8

Clip Channel

各RGBAを指定できる。
上のTextureの動画を参考。

Clip Threshold

Textureで指定されたチャンネルのピクセルが、このしきい値を下回るものはエフェクトが発生しない。
上のTextureの動画を参考。

Color affects Particles

Textureの色を反映する。
https://youtu.be/eJHlcspXBs8

Color affects Particles

Textureのアルファを反映する。
https://youtu.be/EIp7fP6jZ5k

Bilinear Filtering

Textureの4 つの隣接するサンプルを混合して、テクスチャのサイズに関係なく、パーティクルの色をより滑らかに変更します。
一応実験してみたが特に変化がなかった。

Position/Rotation/Scale

Shapeの座標回転スケールを制御できる。

Align to Direction

パーティクルを進行方向に向ける
Align to Directionオフ

Align to Directionオン

Randomize Direction

パーティクルの方向をランダムな方向にブレンドします。
0 に設定すると、この設定は無効になります。
1 に設定すると、パーティクルの方向は完全にランダムになります。
https://youtu.be/4MI7JuPqGMY

Spherize Direction

Randomize Directionと似ているが、Randomize Directionと違って、Shapeの内側にエフェクトが進まない。
https://youtu.be/fAmdy9ZrbGM

Randomize Position

パーティクルの発生場所をランダムに移動
この値が大きいほど発生場所の範囲が広くなる。
0だと適用されない。
https://youtu.be/yPEXGJfMhx8

Scene Tools

Shapeの座標回転スケールをマニュピュレーターで制御できる。
https://youtu.be/H0UPwThhM0I

Type

Mesh/MeshRenderer/SkinnedMeshRenderer/Sprite/Sprite Renderer/で表示される。
パーティクルが放出される場所。Vertex を選択すると、頂点からパーティクルを放出します。Edge を選択すると、エッジからパーティクルを放出します。Triangle を選択すると、三角形からパーティクルを放出します。

Single Material

Mesh/MeshRenderer/SkinnedMeshRendererで表示される。
どのサブメッシュからエフェクトが発生するかマテリアルインデックス番号を指定できる。

Use Mesh Colors

頂点カラーの色でエフェクトの色を調整できる。

Normal Offset

法線からNormal Offsetで指定した値で座標をoffsetした位置からエフェクトを発生させる。
https://youtu.be/6d7gdcKVLOw

Velocity over Lifetime

エフェクトが生存中の速度を制御できる。

Linear

xyz軸ごとに速度を制御できる。
https://youtu.be/cEChxzBntPc
https://youtu.be/s0YlcURXFpI

Space

Linearの基準がローカル空間かワールド空間かを指定できる。

Orbital

旋回するような動きをxyz軸ごとに設定できる。
https://youtu.be/XaAaMfnF1t8

Offset

旋回する中心を設定できる。
https://youtu.be/DLNqvXTtyBE

Radial

旋回の大きさを指定。
https://youtu.be/C4RW6zhJ4Oc

Speed Modifier

Orbitalの速度を指定できる。
https://youtu.be/-Z9TGUckqsc

Limit Velocity over Lifetime

エフェクトが生存中の速度の減退を制御できる。

Separate Axes

オンにするとxyz軸ごとに速度の減退を制御できる。
https://youtu.be/HkbpLBcNutU

Space

速度減退をローカル空間かワールド空間かを指定できる。

Dampen

速度減退の加減を制御できる。
0だと速度減退なしで、値が上がるにつれて速度減退が大きくなる。

Drag

Separate Axesのようにエフェクトに速度の減退を行うことができるが、大きさ(Multiply by Velocity)や速度(Multiply by Size)に応じて速度の減退を行うことができる。
この値が大きいほど速度減退が大きくなる。

Multiply by Size

エフェクトの大きさに応じて速度を減退できる。
大きさが大きいほど減退の影響を受けやすい。
https://youtu.be/ciEZRlaZu_k

Multiply by Velocity

エフェクトの速さに応じて速度を減退できる。
速度が速いほど減退の影響を受けやすい。
https://youtu.be/PEK9FrZOhCk

Inherit Velocity

親オブジェクトの速度対してどの程度速度を継承するか設定できる。
Simulation SpaceがWorldのみ有効になる。

Mode

親オブジェクトの速度継承方法を設定できる。
Current
→常に親オブジェクトの速度を継承
Initial
→パーティクル発生時に、親オブジェクトの速度を継承
https://youtu.be/OKl2QvsCP-o

Multiplier

継承する速度の強さを指定できる。
https://youtu.be/ABSSyEt4MQ4

Lifetime by Emitter Speed

オブジェクトの速度に対して、エフェクトの生存期間が変わる。
https://youtu.be/DbVqJ7sHNV0

Force over Lifetime

エフェクトに対して風から飛ばされるような外力を加えることができる。
https://youtu.be/YaJYPiCUcJ8

Space

外力をローカル空間かワールド空間かを指定できる。

Randomize

Randomizeオフにするとオンに比べてランダム性が増す。
Random Between Two ConstantsとRandom Between Two Curvesの時活性化される。
https://youtu.be/TSmRF4c5RfE

Color Over Lifetime

Color

生存期間に沿って色の変化を指定できる。
https://youtu.be/bSkITilCDsI

Color By Speed

Color

パーティクルの速度によって色の変化を指定できる。
https://youtu.be/c0lNBfg00VY

Speed Range

Colorで指定した色をスピードによって範囲指定できる。
https://youtu.be/wIjti0jQcbs

Size over Lifetime

生存期間に沿ってエフェクトの大きさの変化を指定できる。
https://youtu.be/N28lkyO5m6g

Size by Speed

エフェクトの速さによってサイズが変化する。
https://youtu.be/OnVL5OfdVSw

Rotation over Lifetime

エフェクトの生存期間中に回転し続ける。
https://youtu.be/avoS69JFyvg

Rotation by Speed

エフェクトの速度に応じて回転が変化する。
https://youtu.be/gU5X_cmSXic

External Forces

Wind Zone と Particle System Force FieldsをPartclesystemでも適用できる。

Multiplier

Wind Zone と Particle System Force Fieldsの強さを調整できる。
https://youtu.be/_EAli0NSgng

Influence Filter/Influence Mask

Influence Filterで、Layer Maskか直接指定するリストかその両方を指定できる。
Influence Maskは適用されるLayer Maskを指定できる。
https://youtu.be/ucof8qneQo0

Noise

Curl Noiseを利用してい、エフェクト一つ一つにランダム的な動きを加えることができる。

Separate Axes

各xyz軸ごとに設定できる。
値が大きくするとエフェクトの動きの幅が大きくなる。
この値が同じだと同じ動きする。
https://youtu.be/qD9g8ylS6Vo

Frequency

エフェクトの動きの小刻みさを制御できる。
この値が大きいほど動きが小刻みになる。
https://youtu.be/EtdP1OIuRPI

Scroll Speed

Curl Noiseをスクロールして、より予想できない不規則なエフェクトのの動きを作ります。
https://youtu.be/JSwlCCXJZLA

Damping

挙動を確認してみたがいまいちどこがよくなったかわからない。

Octaves/Octave Multiplier/Octave Scale

Curl Noiseの枚数を指定するが、この数が大きいほどより質の良いランダムな動きができるがその分負荷がかかる。
一応試してみたが動きが小刻みになっただけのような印象を受けた。
小刻みにするだけならFrequencyでも問題なさそうだが、Octavesが1でFrequencyの値を上げて試したところ小刻みの動きが若干ぎこちないというか滑らかではない印象を受けた。
なので、小刻みにしつつ動き滑らかにしたい場合はOctaves/Octave Multiplier/Octave Scaleを調整するのがいいかも。
https://youtu.be/F4N3iD_Mzas

Quality

Curl Noiseの品質を設定できる。
品質が高いほどエフェクトのランダム性は増すが負荷が高くなる。
https://youtu.be/XCy37bCUHrM

Remap/Remap Curve

Curl Noiseをリマップするかどうか設定できる。
これをいじらなくても他の項目をいじればエフェクトのランダム性を変えられるし、特にいじらなくていいと思われる。

Position Amount

どれだけ位置にランダム性が影響を受けるか指定できる。
この値が大きいほどランダム性が増す。
https://youtu.be/qqr7Gu6SAkc

Rotation Amount

どれだけ回転にランダム性が影響を受けるか指定できる。
この値が大きいほどランダム性が増す。
https://youtu.be/u1LLLYhM8bs

Size Amount

どれだけ大きさにランダム性が影響を受けるか指定できる。
この値が大きいほどランダム性が増す。
https://youtu.be/mZkPwMNXupM

Collision

エフェクトが衝突した時の挙動を制御できる。

Type

衝突判定する種類を選べる。
Planesは衝突用の仮想平面、Worldは実際にシーンにあるオブジェクトを使用。
なおPlanesは衝突判定が無限平面で、Worldよりも負荷がかからない。
https://youtu.be/FNYhgNuBfNs

Mode

2Dか3Dを指定。

Dampen

エフェクトの摩擦を設定できる。
値が大きくなるほど摩擦力大きくなる。
https://youtu.be/2Ac71aJaH-Q

Bounce

エフェクトの跳ね返りを指定できる。
値が大きくなるほど跳ね返りが大きくなる。
https://youtu.be/e7E79UJzRb4

Lifetime Loss

エフェクトが衝突するたびにエフェクトが消える係数を設定できる。
この値が大きいほど衝突した際に消えやすい。
https://youtu.be/bsOM7xpR_xs

Min Kill Speed

エフェクトが衝突後の速さがこの値以下ならエフェクトが消滅する。
https://youtu.be/VcwGxAsGxBo

Max Kill Speed

エフェクトが衝突後の速さがこの値以上ならエフェクトが消滅する。
https://youtu.be/5xY31oUxFuQ

Radius Scale

エフェクトの当たり判定の大きさを指摘できる。
https://youtu.be/kHPcts09dQw

Collision Quality

エフェクトの当たり判定の品質を設定できる。
High、Medium、Lowを指定できる。
品質と負荷は、High>Medium>Lowの順で高い。
Medium、Lowは静的コライダーの場合にキャッシュを作成・利用し負荷の軽減を図っている。
静的コライダーとは、コライダーがアタッチされているがRigidbody がアタッチされていないオブジェクトのことである。
下記動画を見ると、静的コライダーでない場合Medium、Lowは衝突した後にすり抜けていることが分かる。またMediumとLowを比較するとLowは衝突した後いくつか衝突した後すり抜けていることが分かる。
https://youtu.be/B6ISNUl96c8

Collides With

指定したレイヤーにのみ衝突する。

Max Collision Shapes

衝突判定のコライダーの形状の数を指定できる。
この値よりも多くのコライダーの形状と衝突する際は、衝突は発生しない。
https://youtu.be/SnSZhkwpxfY

Enable Dynamic Colliders

動的コライダーを衝突判定にするか設定できる。
オンにすると動的コライダーも衝突判定にする。
https://youtu.be/vorDxx9razg

Voxel Size

Unity はグリッド構造で衝突をキャッシュします。この設定はグリッドサイズを制御します。グリッドサイズが小さい方がより正確ですが、メモリを多く消費し効率が落ちます。
なおCollision Quality を Medium か Low に設定しているときのみ、表示される。
https://youtu.be/ngS84x6M4Xk

Collider Force

エフェクトが衝突した際に衝突したオブジェクトに対しての力を指定できる。
https://youtu.be/XRkIh3lmVgE

Multiply by Collision Angle

パーティクルと衝突物の衝突角度が大きいほど衝突時の押し出す力が弱くなる。
下記動画だと手前がオン、奥がオフで実験してみた。
https://youtu.be/KDB4t2XBw50

Multiply by Particle Speed

パーティクルの速さが速いほど衝突時の押し出す力が強くなる。
下記動画だと手前がオン、奥がオフで実験してみた。
https://youtu.be/8roCENcwIwY

Multiply by Particle Size

パーティクルの大きさが大きいほど衝突時の押し出す力が強くなる。
下記動画だと手前がオン、奥がオフで実験してみた。
https://youtu.be/T7zYnZxc63o

Send Collision Messages

エフェクトが衝突したときに、OnParticleCollision関数を呼び出す。

Visualize Bounds

エフェクトの当たり判定を視覚化する。

Triggers

コライダーのisTriggerオンになっているときのみ有効。
Collisionと同じくエフェクトが衝突した時の挙動を制御できる。

Inside/Outside/Enter/Exit

Inside
→コライダーの内側にあるエフェクトの挙動を制御できる。
Outside
→コライダーの外側にあるエフェクトの挙動を制御できる。
Enter
→エフェクトがコライダーに入ったときの挙動を確認できる。
Exit
→エフェクトがコライダーに出ていったときの挙動を確認できる。

設定できる項目は以下である。
Ignore→エフェクト無視
Kill→エフェクト削除
Callback→OnParticleTrigger関数が呼び出される
https://youtu.be/oMIDP5TOlnY

Collider Query Mode

エフェクトが複数のコライダーと衝突した際に、どのコライダーと衝突判定を行うか制御できる。
Disabled→衝突判定を行わない。
One→最初に衝突したコライダーを適用。
All→全てのコライダーと衝突判定。
以下確認するためのスクリプトである。

using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    void OnParticleTrigger()
    {
        ParticleSystem ps = this.GetComponent<ParticleSystem>(); ;

        // パーティクル
        List<ParticleSystem.Particle> inside = new List<ParticleSystem.Particle>();
        List<ParticleSystem.Particle> exit = new List<ParticleSystem.Particle>();

        // get
        int numInside = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Inside, inside, out var insideData);
        int numExit = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Exit, exit);

        // 繰り返し
        for (int i = 0; i < numInside; i++)
        {
            ParticleSystem.Particle p = inside[i];
            if (insideData.GetColliderCount(i) == 1)
            {
                if (insideData.GetCollider(i, 0) == ps.trigger.GetCollider(0))
                    p.startColor = new Color32(255, 0, 0, 255);
                else
                    p.startColor = new Color32(0, 0, 255, 255);
            }
            else if (insideData.GetColliderCount(i) == 2)
            {
                p.startColor = new Color32(0, 255, 0, 255);
            }
            inside[i] = p;
        }
        for (int i = 0; i < numExit; i++)
        {
            ParticleSystem.Particle p = exit[i];
            p.startColor = new Color32(1, 1, 1, 255);
            exit[i] = p;
        }

        // set
        ps.SetTriggerParticles(ParticleSystemTriggerEventType.Inside, inside);
        ps.SetTriggerParticles(ParticleSystemTriggerEventType.Exit, exit);
    }
}

https://youtu.be/BXm2FuWhXKU

Radius Scale

エフェクトの当たり判定の大きさを設定できる。
https://youtu.be/tmTVX7Hvffc

Visualize Bounds

エフェクトの当たり判定の大きさを視覚化できる。

Sub Emitters

条件をもとに別のパーティクルを生成できる。
条件は、Birth、Collision、Death、Trigger、Manualがある。
なおCollision、Death、Trigger、Manualは、別エフェクトがEmmisionのBurstでないとエフェクトが発生しない。

Birth
→エフェクトが発生した時に、発生。
https://youtu.be/mHCOsj7nAuc
Collision
→エフェクトが衝突した時に、発生。
なお、サブエミットの「Emission」を「Bursts」にしないとサブエミットは発生しない
https://youtu.be/ae2jPQ5BHlk
Death
→エフェクトが生存期間が終了した時に、発生。
https://youtu.be/VSaHVOACZTY
Trigger
→エフェクトが衝突した時(Trigger)に時に、発生。
https://youtu.be/b1kjLVoa8N8
Manual
→ ParticleSystem.TriggerSubEmitterメソッドが呼ばれた時に、発生。
https://youtu.be/XQ29bLqO4cM

Inherit

親のエフェクトから継承する要素を設定。
下記を設定できる。
Nothing、Everything、Color、Size、Rotaion、LifeTime、Duration

Emit Probability

サブエフェクトの発生確率を制御できる。
https://youtu.be/h4RsI2-6crY

Texture Sheet Animation

Mode

GridかSpritesを指定できる。
Gridは、連番テクスチャをTilesでグリッドを指定することできる。
Spritesは、連番テクスチャをSpriteEditorでテクスチャアトラスを作成し分割されたテクスチャ一枚一枚を指定していくことができる。
連番テクスチャは以下を使用。

https://youtu.be/Lu3G6-jwEsY

Animation

連番Textureからエフェクトを発生する際の順番を指定できる。
Whole Sheet
→連番Textureの一番上の一番左からスムーズにエフェクトが発生していく

https://youtu.be/bQXCzz2M6Yk
Single Row
→行ごとにエフェクトが発生していくのでWhole Sheetに比べてスムーズな発生の仕方をしない。
どの行にするのかは、Row Modeで指定する。
https://youtu.be/j5VWVYN5E64

Row Mode

Single Rowの時に表示される項目で、どの行にするか指定できる。
Custom
→Rowで行を指定でき、指定した行だけエフェクトが発生する。

https://youtu.be/e0taHoLgd00
Random
→どの行を指定するかはランダム。

https://youtu.be/t1etOLDem98
Mesh Index
→パーティクルに割り当てられたメッシュインデックスに基づいて行を選択します。これは、特定のメッシュを使用するパーティクルも同じテクスチャを使用するようにする場合に便利です。
と公式ドキュメントと記載されているがよくわからなかった。

Time Mode

エフェクトが発生の間隔を指定できる。
Lifetime
→エフェクトの生存期間を基準にする。生存期間が長いほど発生間隔が遅くなる。
https://youtu.be/izK-EtgCpnQ
Speed
→エフェクトの速度を基準に間隔を指定できる。
https://youtu.be/JjYGrDDVKq0
FPS
→指定したFPSを基準に間隔を指定できる。
https://youtu.be/X3ud2qG10tM

Frame over Time

Time ModeがLifetimeのみ表示される。
エフェクトの発生間隔や順番をCurveで調整できる。
https://youtu.be/sWiaJTriQiY

Speed Range

Time ModeがSpeedのみ表示される。
エフェクトの発生間隔や順番を調整できる。
https://youtu.be/c7UfYVsibIE

FPS

Time ModeがFPSのみ表示される。
この値を大きくすることでエフェクトの間隔を早くすることができる。
参考動画はTime ModeのFPSを参照。

Start Frame

開始するエフェクトを指定できる。
https://youtu.be/d63L42_bteo

Cycles

エフェクトの生存期間中にエフェクトが繰り返す回数。
https://youtu.be/84-7RvZkUVM

Affected UV Channels

UVチャネルを指定できる。
使い道がよくわからない。

Lights

エフェクトにライトを設定できる。
ライトの数が多いと負荷がかかるので注意。

Light

使用したいライトを指定する

Ratio

ライトが適用される割合を指定できる。
0-1まで指定可能で、値が大きくなるにしたがってライトの適用率が上がる。

Random Distribution

有効の場合、ランダムにライトが適用され、Ratioの値が大きいほどライトが適用率が上がる。
無効の場合、Ratioの値で必ずライトが適用される。
https://youtu.be/Vvk22gtu_Ss

Use Particle Color

ライトの色をエフェクトの色と同じにするか設定。
有効だと、ライトの色がエフェクトの色と同じになる。
無効だと、ライトの色はLightコンポーネントのColorと同じになる。

LightコンポーネントのColorが赤の場合で実験。
Use Particle Color有効

Use Particle Color無効

Size Affects Range

LightのRangeの計算方法を指定できる。
有効にすると、パーティクルのSizeとLightコンポーネントのRangeを乗算する。
無効だと、RamgeはLightコンポーネントのRangeのまま。
https://youtu.be/KSdzENxelzw

Alpha Affects Intensity

Lightのアルファの計算方法を指定できる。
有効にすると、パーティクルのアルファとLightコンポーネントのアルファを乗算する。
無効だと、アルファはLightコンポーネントのアルファのまま。
https://youtu.be/BIQwS8PpJB0

Range Multiplier

ライトのRangeを生存期間に沿って乗算できる。
https://youtu.be/sXR9bIykc8E

Intensity Multiplier

ライトのIntensityを生存期間に沿って乗算できる。
https://youtu.be/_IGMA9H2iog

Maximum Lights

ライトの最大数を設定できる。
これにより間違って多くのライトが適用されることによるパフォーマンスの低下を防いだりできる。

Trails

Trail表現ができる。
ただRendererモジュールのTrail Materialを設定しないとシェーダーエラーが出るので注意。

Mode

Trail表現の方法を指定できる。
Particles→エフェクト一つ一つに対してTrail表現
Ribbon→エフェクト同士をつなげてTrail表現
https://youtu.be/0XwD2QQ_Yws

Ratio

ModeがParticlesの時に表示される項目。
Trailが発生する確率を指定できる。
0-1までの値で大きくなるほどTrailの発生する確率が上がる。

Lifetime

ModeがParticlesの時に表示される項目。
Trailの生存期間を指定して長さを調整できる。
0-1までの値で大きくなるほどTrailの長さが長くなる。
https://youtu.be/-BcSqw41c5E

Minimum Vertex Distance

ModeがParticlesの時に表示される項目。
Trailの滑らかさを調整できる。
値が大きいほどかくかくした感じになる。
https://youtu.be/sZdqbECWmfo

World Space

ModeがParticlesの時に表示される項目。
Partclesystemが動いたときにそれにTrailが追従するか設定できる。
有効の場合、Trailが追従する。
無効の場合、Trailが追従しない。
https://youtu.be/W9F4tlpl5xE

Die With Particles

ModeがParticlesの時に表示される項目。
エフェクトの生存期間が終了した際に、Trailも消えるかの設定。
有効だとTrailも消える。
無効だとTrailは残る。
https://youtu.be/tMkcjNhYj4M

Ribbon Count

ModeがTrailの時に表示される項目。
全体のリボンの数を設定できる。
例えばエフェクトの数が10、Ribbon Countが1だと
1つのリボンで10個のエフェクトを結ぶ。
もし、Ribbon Countが2だと、5つのエフェクトで1つのリボンを形成する。
Ribbon Countが1

Ribbon Countが5

Split Sub Emitter Ribbons

ModeがTrailの時に表示される項目。
Sub Emittersが親のエフェクトと1 つのリボンを共有します。
有効だと共有、無効だと共有しない。
確認した感じだと、有効だと親のエフェクトも含めてリボンをつなげているように見える。
Split Sub Emitter Ribbons無効

Split Sub Emitter Ribbons有効

Attach Ribbons to Transform

ModeがTrailの時に表示される項目。
公式ドキュメントに乗っていない。
確かに見た目は変わっているが正直よくわからない。
Attach Ribbons to Transform無効

Attach Ribbons to Transform有効

Texture Mode

Trailの表現方法を変更できる。
Stretch

Tile

Distribute per Segment

Repeat per Segment

Static

Texture Scale

Trailのタイリングが可能。
Texture Scaleが1

Texture Scaleが3

Size affects Width

有効にすると、Trailの横幅はエフェクトのサイズによって乗算されます。
Size affects Width無効

Size affects Width有効

Size affects Lifetime

有効にすると、Trailの縦幅はエフェクトの生存期間によって乗算されます。
https://youtu.be/ME6Es4EXMEA

Inherit Particle Color

有効にすると、Trailの色はエフェクトのの色と同じになる。
無効

有効

Color over Lifetime

エフェクトの生存期間に沿って、Trailの色を調整できる。
https://youtu.be/T-8O-1ktoxg

Width over Trail

Trailの横幅を設定できる。
Width over Trailが1

Width over Trailが3

Color over Trail

Trailの色を制御します。

Generate Lighting Data

チェックを入れるとNormalとTangentを含む頂点情報を生成する。
シーンライティングやカスタムシェーダーを使用する場合などに有効にする。

Shadow Bias

影を光の方向に沿って移動させる。
これにより、ビルボード トレイル ジオメトリでボリュームを近似することによって発生する影のアーティファクトが除去される。

Custom Data

Custom DataモジュールはRendererモジュールのCustom Vertex Streamsと一緒に使います。
以下のCustom Dataを用意して実験してみる

Custom Vertex Streamsはこのようにする。
赤枠の箇所がCustom Dataで設定した値をシェーダーに渡す。

シェーダーグラフで赤枠の値を受け取るシェーダーを作成する。
赤枠はTEXCOORD1なのでUV1に設定する

作成したシェーダーを、RendererモジュールのMaterialのアタッチした結果が以下。
Custom Dataで設定した値が正しく渡されてるのが分かる。

Renderer

Render Mode

エフェクトの描画方法を設定できる。
Billboard
Render Alignmentで向きを指定できる。
今回はRender AlignmentをViewで指定したのでこのような向きになっている。
https://youtu.be/rJYlhUn8LQY
Stretched Billboard
カメラに対して常に正面を向くが、エフェクトの進行方向を向く。
https://youtu.be/UnVYSSbnqXQ
Horizontal Billboard
xz面に対して平行。
https://youtu.be/xFM1ffC-A_c
Vertical Billboard
y軸に対して平行。
https://youtu.be/0BBZSLRqHQI
Mesh
Meshを指定できる。

None
何も描画しない。
TrailモジュールやLightモジュールを使用したいだけのときなどに使用する。

Camera Scale

Render ModeのStretched Billboardの時に表示される。
カメラを動かすと動きの方向に対してエフェクトを引き延ばす
https://youtu.be/5A9emEz7-98

Velocity Scale

Render ModeのStretched Billboardの時に表示される。
エフェクトの速度に比例してエフェクトを引き延ばす。
https://youtu.be/1tXyPmHoyRQ

Length Scale

Render ModeのStretched Billboardの時に表示される。
エフェクトの進行方向にサイズを調整できる。
https://youtu.be/a0Y-46fjWlQ

Freeform Stretching

Render ModeのStretched Billboardの時に表示される。
よくわからない。

Rotate With Stretch

Render ModeのStretched Billboardの時に表示され、Freeform Stretchingが有効のときに活性化される。
ただ、Freeform Stretchingがよくわからないので一旦パス。

Mesh Distribution

Render ModeのMeshの時に表示される。
指定したMeshで、どのMeshが描画されるか設定できる。
Uniform Random
→均等に描画される。
Non-uniform Random
→メッシュごとに描画される率を指定できる。値が大きいほど描画されやすい。

Normal Direction

Render ModeのBillboard、Stretched Billboard、Horizontal Billboard、Vertical Billboardの時に表示される。
ビルボードの法線を調整できる。
0だとスクリーンの中心(法線の向きが頂点によって変わる)。
1だと常にカメラ投影方向(と同じ方向の法線)。
https://youtu.be/j8jn03aUvI0
なので、0は1と比べて球体のようにシェーディングされ、1は0と比べより平面にシェーディングされているように見える。
Normal Directionが0


Normal Directionが1


参照サイト

Material

エフェクトのマテリアルを指定する。

Trail Material

Trailモジュールが有効であるとき表示される。
Trailエフェクトのマテリアルを指定する。

Sort Mode

エフェクトの描画順序を設定できる。
None
特に何も変更しない。
By Distance
カメラの距離に応じてエフェクトの順序を決める。
カメラから近いエフェクトを手前に、遠いエフェクトは奥にする。
https://youtu.be/1oQllmFUBkU
Oldest in Front
生存期間が古いエフェクトを手前に描画する。
https://youtu.be/i2PBQOW1d8o
Youngest in Front
生存期間が若いエフェクトを手前に描画する。
参考動画はOldest in Frontを参照。
By Depth
ニアプレーンの距離に応じてエフェクトの描画順を決める。
ニアプレーンから近ければ手前、遠ければ奥。
ただBy Distanceとほぼ同じ?

Sorting Fudge

Partclesystem同士の描画順を指定できる。
値が小さいほど手前にくる。
https://youtu.be/9ZKkCEeyiRQ

Min Particle Size

Render ModeのBillboard、Stretched Billboard、Horizontal Billboard、Vertical Billboardの時に表示される。
ビューポートに占める最小サイズ。
Min Particle Sizeが0

Min Particle Sizeが0.3

Max Particle Size

Render ModeのBillboard、Stretched Billboard、Horizontal Billboard、Vertical Billboardの時に表示される。
ビューポートに占める最大サイズ。
https://youtu.be/RnS-M83EiEY

Render Alignment

Render ModeがBillboardの時に表示される項目。
向きを指定できる。
View
常にカメラに対して向く。
https://youtu.be/ePGZz2UYEwI
World
ワールド座標に対して向く。
https://youtu.be/5MHt6F5NeIA
Local
Particle Systemオブジェクトの回転軸の向きになる。
https://youtu.be/Rbu42EiXSOk
Facing
カメラの中心部に対して向く。
なのでViewと違って画面の中央と端で角度の違いがでる。
Viewはカメラの投影面に対して向くため、画面の中央と端で角度の違いがでない。
イメージ的には下記画像。(赤がFacing、青がView)

動画で見ると少し分かりにくいが、Facingだと端にあるエフェクトは、Viewと比べれて向きが変わっていることが分かる。
https://youtu.be/ADaA02qzxVQ
Velocity
エフェクトの進行方向に対して向く。
https://youtu.be/nYpm7RaTiSE

Enable Mesh GPU Instancing

Render ModeがMeshの時に表示される項目。
GPUインスタンスを有効にするかを設定。

Flip

エフェクトを反転させたり、ランダムに反転させたりできる。
1だと反転、0.5だとランダムに反転。
https://youtu.be/XD0AMCnRgtA

Allow Roll

カメラに向いているパーティクルがカメラの Z 軸を中心に回転できるかどうかを制御します。
VR アプリケーションでは、ヘッドマウントディスプレイ (HMD) の回転によって、パーティクルシステムが望ましくない形で回転する場合があるため、この設定を無効にすると特に役立つ可能性があります。

Pivot

回転軸のPivotを調整できる。
https://youtu.be/VV7BSR8PTt0

Visualize Pivot

エフェクトのPivotを視覚化する。

Masking

SpriteMaskを使用して、エフェクトをマスクできる。
https://youtu.be/dhm0DU3UqKo

Apply Active Color Space

設定されているColor Spaceと同じ色空間にする設定であるみたいだが、オンオフで実験してみたところ結果は同じだった。
参照サイト

Custom Vertex Streams

Custom Vertex Streamsとは、Particle Systemの項目でParticle Systemで設定しているモジュール内の値をシェーダーに渡せる機能である。
これを利用することで、Particle Systemの回転・速さ・大きさなどの値に応じてシェーダー内の動的に変更できる。
以下で試しているのでこちらを参照。
https://zenn.dev/nakaigames/articles/0358fdba5536c7

Cast Shadows

エフェクトに影をつけれる。
On、Off、Two-Sided、Shadows Onlyを指摘できる。

Static Shadow Caster

「Baked、RealTime、Mixedの影の検証【その1】」の静的シャドウキャスターのことを指していると思うが、挙動が違う。
https://zenn.dev/nakaigames/articles/109a47b88adfa7

Shadow Bias

シャドウアクネが解消できる。

Motion Vectors

Motion Vectorを使用できる。
エフェクトが前フレームからどれだけ移動した情報を持っているテクスチャのこと。
https://light11.hatenadiary.com/entry/2018/09/25/211539

Sorting Layer ID

Sorting Layerを指定して、各Sorting Layerごとに描画の順番を変更できる。
下にいくほど前に描画される。
https://youtu.be/E-rNhQL2M4o?feature=shared

Order in Layer

Sorting Layer内での描画順を設定できる。
この値が高いほど前に描画される。

Light Probes

エフェクトにLight Probesを適用できる。
https://youtu.be/UtZSa5zW_ec

Rendering Layer Mask

エフェクトに特定のLightを適用できる。
https://youtu.be/Vj1LsqZYjwo

Selection OutLlineでパーティクルのアウトラインを消す

有効

無効

プリセット機能でParticle Systemを使いまわすことができる

ただ、Remdererモジュールはコピーされない。
https://youtu.be/eaO9X4_VCio
なお、余談であるがモデルやテクスチャでもこのような設定がある。

Unity Grenobleでタイリング可能なシームレステクスチャ作成可能

参照サイト参照サイト

SceneビューとGameビューの色味が違う場合

カメラのポストプロセスを有効にする

NovaShaderのLuminanceを調整する

①Luminanceを有効にする
色が濃くなっている

Luminanceを有効にすると解決する

Discussion