これまでの連載で、パーティクルの動きや見た目の制御についてはかなり詳しくなりました。
しかし、現状のパーティクルはまだ「幽霊」のような存在です。
壁をすり抜け、何かに触れても無反応。これではリアリティに欠ける場面もあります。
今回は、エフェクトに実体感を与える Collision 、イベントの火種となる Trigger 、そして演出に爆発的な情報量をもたらす Sub Emitters について深く掘り下げます。
実体感の構築: “Collision” モジュール
パーティクルが物理的な障害物に当たって跳ね返る、あるいは消滅するといった挙動を制御します。
1. “Type” の選択: “Planes” vs “World”
-
“Planes”: インスペクターで指定した特定の平面のみと衝突します。非常に軽量なため、床だけに当たればいい場合などに有効です。
-
“World”: シーン内のコライダーすべて(レイヤーで制限可能)と衝突します。汎用性が高いですが、数が増えると計算負荷が高まるため、中級者は必ず
Collides Withで対象レイヤーを絞り込みます。
2. 質感を変えるパラメータ
-
“Bounce”(弾み): 0だと全く跳ねず、1だと元と同じ勢いで跳ね返ります。
-
“Dampen”(摩擦): 衝突した際にどれくらい勢いを殺すか。0.1程度入れるだけで「壁に当たってズルズルと落ちる」ような表現になります。
-
“Lifetime Loss”: 衝突時に寿命をどれくらい削るか。1(100%)に設定すれば、当たった瞬間に消える粒子(水しぶきが地面に吸い込まれる表現など)が作れます。
中級者の知恵: Collision Quality 計算負荷が気になる場合は
Qualityを下げましょう。Highは正確ですが、MediumやLowにすると計算を間引いてくれます。大量の火花などはLowで十分です。
座標の監視者: “Trigger” モジュール
特定の「範囲(コライダー)」の中に粒子が入ったか、出たかを検知します。
4つの判定ステータス
-
“Inside”: 範囲内にいる間。
-
“Outside”: 範囲外にいる間。
-
“Enter”: 範囲に入った瞬間。
-
“Exit”: 範囲から出た瞬間。
これらを Kill (消滅)や Ignore (無視)に設定するだけで、「特定のエリア内だけで見える魔法陣」などが作れます。
さらに、 Callback に設定してスクリプト(OnParticleTrigger)を書けば、【敵に当たった粒子だけがダメージを与える】といった高度なゲームロジックとの連携が可能になります。
連鎖の美学: “Sub Emitters” モジュール
ある粒子の「イベント」をきっかけに、別のパーティクルを発生させます。
エフェクトの情報量を劇的に増やす「親子の連鎖」です。
発生のきっかけ(Condition)
-
“Birth”: 親が生まれた瞬間に、子が発生する(跡を追うトレイルのような表現)。
-
“Death”: 親が消滅した瞬間に、子が発生する(花火の炸裂など)。
-
“Collision”: 親が何かに当たった瞬間に、子が発生する(地面に落ちた水滴が弾ける表現)。
-
“Trigger”: トリガー条件を満たした瞬間に、子が発生する。
中級者のこだわり: “Inherit”(継承)
子が親から何を引き継ぐかを設定します。 Color や Size を継承させれば、親が赤ければ子も赤く、親が小さければ子も小さく生まれます。
これにより、親子のビジュアル的な一貫性が保たれ、演出としての説得力が格段に向上します。
おわりに
今回は、エフェクトが世界と対話するためのモジュールを解説しました。
Collision で実在感を与え、 Trigger でシステムと繋ぎ、 Sub Emitters で複雑な連鎖を作る。
これらが組み合わさることで、エフェクトは単なる「絵」を超え、プレイヤーの体験に直接影響を与える「現象」へと進化します。
次回は、これまでのモジュールとは少し毛色の違う特殊枠。
動きの軌跡を美しく描く Trails モジュールを単体で徹底解剖します。
