VRChatプレイヤーによるParticle System解説 ~Collision Module編~


この記事はUnity 2019.4.29f1の記事です

External Forces, Noise Module編 << ここ >> Triggers, Sub Emitters Module編

はじめに

この記事はちょっとParticle System触れるようになったけどまだまだ知らないパラメーターだらけで抵抗感がある人向けにじゃあ全項目解説しようという記事です。

パーティクル?シェーダー?憧れるけどよくわかんない…という人は最近はVRCUnity勉強会などで初歩の初歩から解説してくれる講座などが解説されているのでそこに参加してみたりするといいでしょう。

その他にこの記事はアドベントカレンダーにしてParticle Systemの記事を増やしてパーティクルへの抵抗感を減らしてやろうという企みもあります。

Collision Moduleってどこ?


Collision

パーティクルがコライダーに衝突した時にどういう反応をするか決めるパラメーター

Type

デフォルト Planes
パーティクルがどこのコライダーにぶつかるか設定するパラメーター
ワールドのコライダーに反応させたいことが殆どだと思うのでその場合はWorldにする


Visualization

デフォルト Solid
TypeがPlaneの時のみ弄れる
コライダーがどういう見え方をするか決めるパラメーター

Scale Plane

デフォルト 1 (0~3.402823e+38)
コライダーの見え方の大きさを決めるパラメーター
あくまでどういう見え方になるかと言うだけなので実際の判定は無限にある


以下はWorld前提で解説

Mode

デフォルト 3D
2Dに切り替えれば2Dコライダーで扱えるようになるけど…そもそも3D前提の話なのでスルー

Dampen

デフォルト 0 (0~1)
単位 割合
パーティクルが衝突した際にどれくらいパーティクルのスピードが減るか決めるパラメーター
1にすると衝突したとこに留まる

Bounce

デフォルト 1 (0~2)
パーティクルがどれくらいの強さで跳ね返るか決めるパラメーター
0にすると衝突した表面を滑っていく

Lifetime Loss

デフォルト 0 (0~1)
単位 割合
パーティクルが衝突した際にどれだけ寿命が減るか決めるパラメーター
1にすると衝突した瞬間に消えるしLifetimeを長くしたパーティクルに0.2とか設定すれば4~5回跳ねて消えるパーティクルが作れる

Min/Max Kill Speed

デフォルト 0/10000
単位 m/s
パーティクルが衝突した際にこの数値より遅い/速いパーティクルは消される
Maxを0にしとけば衝突した瞬間に消えるしMinを設定すれば遅いパーティクルだけ消したりできる

Radius Scale

デフォルト 1 (0.0001~3.402823e+38)
単位 倍
パーティクル1つ1つの衝突判定の大きさ
下の方にあるVisualize Boundsで判定を見えるようにしながら調整するといい

Collision Quality

デフォルト High
パーティクルが動的なコライダーに衝突するかどうか決める設定
アバターにパーティクルを入れるならHighじゃないと何にも衝突しない
ワールドに入れてアバターに衝突させたいってのもHigh
ここではHighの場合のみ解説する

Collide With

デフォルト Everything
パーティクルがどのレイヤーに衝突するか指定するパラメーター
基本デフォルトでいいが19番目のレイヤーがメニューのレイヤーなのでそこを外すとメニューに当たらなくなる

Max Collision Shapes

デフォルト 256 (0~2,147,483,647)
同時に認識できる最大のコライダー数
まあデフォルトでいいけど増やすと負荷の原因になる

Enable Dynamic Colliders

デフォルト ON
動的なコライダーにパーティクルが衝突するか決めるパラメーター
Dynamic Boneは関係ない、デフォルトでいい

Collider Force

デフォルト 0 (0~3.402823e+38)
パーティクルがどれくらいの力でオブジェクトを押しのけるか決めるパラメーター
Rigidbodyが適用されてるオブジェクト(転がったりするやつ)を動かせる

Multiply by Collision Angle/Particle Speed/Particle Size

デフォルト ON/OFF/OFF
オブジェクトを押しのける力を衝突した角度/速度/サイズに比例させるパラメーター
速度はONのほうがよさげ

Send Collision Message

デフォルト OFF
パーティクルが衝突したことで何か起こるオブジェクトに対して衝突したサインを送るかどうか決めるパラメーター
これ入れてると対策してないギミック勝手に起動したりできちゃう

Visualize Bounds

デフォルト ON
パーティクルの衝突判定を可視化するかどうか決めるパラメーター
ONにしててもUnity上でしか見えないから困らない

おわり

ということでCollision Moduleでした
レイヤー周りの仕様は最近変わったのであんま詳しくないです
次はTriggers, Sub Emitters Moduleです


External Forces, Noise Module編 << ここ >> Triggers, Sub Emitters Module編