【Unity入門】パーティクルシステムの基本を理解しよう!爆発・火花・煙を作る手順とC#での制御方法
ゲームで敵を倒したときの爆発、キャラクターが着地したときの砂ぼこり、魔法を使ったときのキラキラした光。こうした「小さな粒がたくさん出て、動いて、消える」表現は、パーティクルシステムという仕組みで作られています。
プログラムで一つ一つ粒を動かそうとすると大変ですが、Unityにはパーティクルシステムが標準で用意されています。数値を調整するだけで、見た目の派手なエフェクトを作れます。
この記事では、次のことを順番に解説します。
- パーティクルシステムとは何か
- 主要なモジュール(設定項目のまとまり)の役割
- 実際にヒットエフェクトを作る手順
- C#スクリプトから再生・停止する方法
- 初心者がつまずきやすいポイント
動作確認はUnity 6を前提としています。
パーティクルシステムとは
パーティクル(Particle)は「粒子」という意味です。パーティクルシステムは、画像やメッシュで作った小さな粒を大量に発生させ、動かし、一定時間後に消すための仕組みです。

イメージしやすいように、花火にたとえてみましょう。
| 花火 | パーティクルシステム |
|---|---|
| 打ち上げ筒 | エミッター(粒を出す場所) |
| 火の粒 | パーティクル |
| 火の粒が広がる方向 | Shapeモジュール |
| 火の粒が消えるまでの時間 | Start Lifetime |
| 火の粒の色が変わっていくこと | Color over Lifetime |
つまり、「どこから」「どれだけ」「どんな向きで」「どんな見た目の粒を」出すかを設定していくのがパーティクルシステムの作業です。
パーティクルシステムの作り方
Hierarchyウィンドウで右クリックし、Effects > Particle System を選ぶと作成できます。作成した直後は、シーンビューに白い粒が上向きに出続ける状態になっているはずです。
Inspectorを見ると、モジュールと呼ばれる項目が縦に並んでいます。モジュールはチェックボックスでオン・オフでき、必要な機能だけを有効にして使います。
最初に覚える主要モジュール
Unityのパーティクルシステムには多くのモジュールがありますが、最初からすべてを覚える必要はありません。まずは次の5つを押さえましょう。
1. メインモジュール(Particle System)
粒の「初期状態」を決める、いちばん大事なモジュールです。
| 項目 | 役割 |
|---|---|
| Duration | エフェクト全体の再生時間 |
| Looping | 繰り返し再生するか |
| Start Lifetime | 粒が生きている時間(秒) |
| Start Speed | 発生時の速さ |
| Start Size | 発生時の大きさ |
| Start Color | 発生時の色 |
| Gravity Modifier | 重力の影響の強さ(0で無重力) |
| Simulation Space | 粒をローカル座標で動かすか、ワールド座標で動かすか |
| Play On Awake | シーン開始時に自動で再生するか |
| Stop Action | 再生が終わったときの動作(Destroyにすると自動削除) |
初心者が最初にいじるのは、Start Lifetime、Start Speed、Start Sizeの3つです。Constant(固定値)だけでなくRandom Between Two Constants(2つの値の間でランダム)も選べるので、粒にばらつきを出したいときに便利です。
2. Emissionモジュール
粒をいつ・どれだけ出すかを決めます。
- Rate over Time:1秒あたりに出す粒の数。煙や炎のように出し続けるエフェクト向きです。
- Bursts:指定したタイミングで一気に粒を出します。爆発やヒットエフェクト向きです。
3. Shapeモジュール
粒をどんな形の範囲から、どの向きに出すかを決めます。Sphere(球)、Cone(円錐)、Box(箱)、Circle(円)などから選べます。
- 爆発:Sphere(全方向に広がる)
- 噴水やスポットライト:Cone(一方向に広がる)
- 雨や雪:Box(広い範囲から降らせる)
4. Color over Lifetime / Size over Lifetime
粒が生まれてから消えるまでの間に、色や大きさを変化させます。
- Color over Lifetime:グラデーションの末尾でアルファ(透明度)を0にすると、粒がふわっと消えます。
- Size over Lifetime:カーブで大きさを変えます。だんだん小さくすると、火花が消えていく表現になります。
粒が突然ぷつっと消えると不自然に見えるので、この2つを設定するだけで見栄えがかなり良くなります。
5. Rendererモジュール
粒をどう描画するかを決めます。
- Render Mode:通常は Billboard(常にカメラのほうを向く板)です。
- Material:粒に貼る見た目です。プロジェクトで使っているレンダーパイプライン(Built-in、URPなど)に合ったシェーダーを使ったマテリアルを指定します。
ポイント:粒がピンク色に表示されるときは、マテリアルのシェーダーがレンダーパイプラインに対応していない可能性があります。マテリアルのシェーダーを見直してみてください。
実践:ヒットエフェクトを作ってみよう
ここまでの内容を使って、物がぶつかったときに出る「火花のようなヒットエフェクト」を作ります。
手順1:Particle Systemを作成する
Hierarchyで Effects > Particle System を作成し、名前を HitEffect に変更します。
手順2:メインモジュールを設定する
| 項目 | 設定値の例 |
|---|---|
| Duration | 0.5 |
| Looping | オフ |
| Start Lifetime | 0.4〜0.8(Random Between Two Constants) |
| Start Speed | 3〜6(Random Between Two Constants) |
| Start Size | 0.1〜0.3(Random Between Two Constants) |
| Start Color | 黄色〜オレンジ |
| Gravity Modifier | 1 |
| Stop Action | Destroy |
手順3:Emissionを設定する
- Rate over Time を
0にします。 - Bursts の「+」ボタンで1行追加し、Time = 0、Count = 30 にします。
これで、再生した瞬間に30個の粒が一気に飛び出します。
手順4:Shapeを設定する
Shape を Sphere にして、全方向に粒が広がるようにします。
手順5:色と大きさの変化を付ける
- Color over Lifetime をオンにし、グラデーションの右端のアルファを0にします。
- Size over Lifetime をオンにし、カーブを右下がりにします。
手順6:プレハブにする
完成した HitEffect をProjectウィンドウにドラッグ&ドロップして、プレハブにします。Hierarchyにあるオブジェクトは削除して構いません。
C#からパーティクルを再生する
プレハブができたら、ぶつかった位置にエフェクトを出すスクリプトを書きます。
using UnityEngine;
public class HitEffectSpawner : MonoBehaviour
{
[SerializeField] private ParticleSystem hitEffectPrefab;
private void OnCollisionEnter(Collision collision)
{
// 最初の接触点を取得
ContactPoint contact = collision.GetContact(0);
// 接触した位置にエフェクトを生成
ParticleSystem effect = Instantiate(hitEffectPrefab, contact.point, Quaternion.identity);
effect.Play();
}
}
このスクリプトをボールなどのオブジェクト(Rigidbody と Collider が付いたもの)に追加し、Inspectorの Hit Effect Prefab に先ほどのプレハブを設定します。何かにぶつかるたびに火花が散るようになります。
「的に当たったら粒が飛び散る」という演出は、ゲームの中でもよく使います。実際のゲームでの使い方は、Unity 6でIgaguriを作る② ― クリックした方向へ飛ばして、パーティクルで演出する で確認できます。
解説
OnCollisionEnterは、他のColliderとぶつかった瞬間に呼ばれるメソッドです。Colliderの基本は 【学習】当たり判定(Collider)(Collider2D、Rigidbody2D) で解説しています。collision.GetContact(0)で、ぶつかった場所の情報を取り出しています。Instantiateでプレハブをその場所に生成し、Play()で再生しています。プレハブと生成の基本は 【学習】プレハブと生成(Prefab、Instantiate、Destroy) を参照してください。- メインモジュールの Stop Action を Destroy にしてあるので、再生が終わると自動的にオブジェクトが削除されます。これを忘れると、エフェクトのオブジェクトがシーンに残り続けてしまいます。
再生・停止を制御するメソッド
シーンに置いたパーティクルを操作したい場合は、ParticleSystem の次のメソッドを使います。
using UnityEngine;
public class ParticleController : MonoBehaviour
{
[SerializeField] private ParticleSystem smoke;
public void StartSmoke()
{
smoke.Play(); // 再生を開始
}
public void StopSmoke()
{
// 新しい粒の発生だけを止める(出ている粒は消えるまで残す)
smoke.Stop(true, ParticleSystemStopBehavior.StopEmitting);
}
}
Stop の第2引数で、止め方を選べます。
| 指定 | 動き |
|---|---|
StopEmitting |
新しい粒の発生だけ止める。すでにある粒は寿命まで残る |
StopEmittingAndClear |
発生を止め、出ている粒もすぐに消す |
煙や炎を自然に消したいときは StopEmitting が向いています。
初心者がつまずきやすいポイント
1. 粒が見えない・ピンク色になる
マテリアルのシェーダーが、使っているレンダーパイプラインに合っていない可能性があります。Rendererモジュールの Material を確認しましょう。
2. エフェクトがシーンに残り続ける
Instantiate で生成したエフェクトは、自分で消さない限り残ります。メインモジュールの Stop Action を Destroy にするのが最も簡単な対策です。
3. 移動するオブジェクトに付けたら粒の軌跡がおかしい
Simulation Space の設定が原因のことがあります。粒が親オブジェクトに付いて動いてほしいときは Local、置き去りにして軌跡を残したいときは World を選びます。
4. 粒を出しすぎて重くなる
Burst の Count や Rate over Time を増やしすぎると、描画の負荷が上がります。Max Particles で上限を決めておくと安心です。特にスマホ向けのゲームでは、必要最小限の数に抑えましょう。
パーティクルシステムとVFX Graphの違い
Unity 6には、もう一つのエフェクト機能として VFX Graph があります。
| Particle System | VFX Graph | |
|---|---|---|
| 設定方法 | Inspectorでモジュールを調整 | ノードをつないで作る |
| 処理 | 主にCPU | 主にGPU |
| 向いている用途 | 一般的なエフェクト全般、入門 | 数十万単位の大量の粒、高度な表現 |
最初に学ぶのは Particle System がおすすめです。操作が分かりやすく、考え方(発生・移動・変化・消滅)はVFX Graphでも共通しているため、そのまま次のステップに活かせます。
まとめ
- パーティクルシステムは、小さな粒を大量に出して動かす仕組み。
- 「どこから・どれだけ・どんな向きで・どんな見た目で」を設定していく。
- 最初に覚えるのは、メイン、Emission、Shape、Color/Size over Lifetime、Renderer の5つ。
- 爆発やヒットエフェクトは Burst で作り、Stop Action を Destroy にしておくと扱いやすい。
- C#では
Play()とStop()で再生を制御できる。
パーティクルは、数値を少し変えるだけで見た目が大きく変わります。まずは作ったヒットエフェクトの Start Speed や Gravity Modifier を変えて、どう変わるかを試してみてください。「触って確かめる」ことが、いちばんの近道です。
次に読むとおすすめの記事
- Unity 6でIgaguriを作る② ― クリックした方向へ飛ばして、パーティクルで演出する:クリックした方向へ飛ばし、的に当たったらパーティクルで演出する、実際のゲームでの使い方
- Unityでパーティクルに当たり判定をつける3つの方法:粒がオブジェクトに当たったことを判定したいときに
- Unity 6 ゲーム制作 補足解説シリーズまとめ ― 6つのサンプルゲームで学ぶ全10本:サンプルゲームで学ぶシリーズの一覧(ここから他の記事にも戻れます)
参考
- Unity公式マニュアル「Particle System component reference」(Unity 6): https://docs.unity3d.com/6000.6/Documentation/Manual/ParticleSystemModules.html








ディスカッション
コメント一覧
まだ、コメントがありません