Iwaken Lab. Advent Calendar 2025、13日目の記事です。
背景
UnityのParticle Systemにおいて、発生したParticleを任意の地点に集結させる方法としては、 Velocity over Lifetime の Offset や Radial を用いる手法が一般的です。
しかし、Offsetは特定の一点にParticleを集める用途では調整が直感的でなく、使い勝手がよくありません。
そこで本記事では、Sub Emitter と Radial を組み合わせた、より扱いやすい方法を紹介します。
仕組み
本手法の仕組みは以下の通りです。
- 親Particleを発生させる
- 発生後すぐに DeathイベントでSub Emitterを発火
-
子Particle側で
Velocity over Lifetimeの Radial の値を小さく設定する
これにより、
- 親Particleの Death地点 が Particle の発生地点
- 子Particleの Transform Position が Particle の集結地点
という関係を作ることができます。
方法
Particle Systemの設定
親Particle
-
Start Lifetime を非常に短い値に設定
- 例:
0.001
- 例:
-
Emission を
Burstに設定 -
Count を
1に設定 -
Sub Emitter に
子ParticleSystemを設定
子Particle
-
Velocity over Lifetimeの Radial の値を小さく設定します -
Emissionを Burst に設定します -
Transformの位置を調整
これで設定は完了です。
親Particleの位置でParticleが発生し、
子ParticleのTransformの位置に向かって集結する挙動が確認できます。
応用
この仕組みは、以下のような表現にも応用できます。
- 子Particleを Constraint でターゲットに追従させる
- Animation によって集結先を動かす
- 直線的に配置して 文字や図形を描く
Offset方式との違いは、集結地点をTransformで直感的に制御できる点です。
試しに今回の手法を用いて、チューリップをイメージしたParticle配置を行ってみました。
花の根本が親Particleの位置となり、子Particleはその上下に配置されています。
Particle 表現のちょっとした引き出しとして、
何かの参考になれば嬉しいです。






