コインを取ったらキラキラ、敵を倒したらドカン、焚き火からはモクモク。小さな粒をたくさん飛ばして表現するのがパーティクルです!今回はUnityのParticle Systemの基本と、スクリプトから一瞬だけ出す方法をご紹介します。
この記事で学べること
- Particle Systemの作り方と、シーンビューでの確認方法
- よく使うモジュール(Main・Emission・Shape・Color over Lifetimeなど)の設定
- URPでのパーティクルのマテリアル
- プレハブにして、スクリプトから好きな場所に出す方法
前提知識
- プレハブの基本概念と作成方法
- スクリプトからプレハブを生成しよう:Instantiateの使い方
- 衝突を検知しよう:当たり判定のイベントとタグ:コインを取る仕組み
Particle Systemを作ってみよう
- Hierarchyで右クリック>Effects>Particle Systemを選択
- 白い粒が上に向かってふわふわ出てくれば成功!
オブジェクトを選んでいる間は、シーンビューの右下にParticle Effectという小さなウィンドウが出て、再生・一時停止・最初からやり直し(Restart)が出来ます。
よく使うモジュール
InspectorのParticle Systemは、「モジュール」ごとに設定が分かれています。名前の左のチェックでOn/Off、名前をクリックで開閉します。
Main(一番上の設定)
| 項目 | 内容 |
|---|---|
| Duration | 1回の再生の長さ(秒) |
| Looping | くり返すかどうか |
| Start Lifetime | 1つの粒が消えるまでの時間(秒) |
| Start Speed | 粒が飛び出す速さ |
| Start Size | 粒の大きさ |
| Start Color | 粒の色 |
| Gravity Modifier | 重力のかかり具合(1で普通に落ちる) |
| Simulation Space | Local:オブジェクトと一緒に動く/World:出た後は置いていかれる |
| Play On Awake | 有効になったときに自動で再生 |
| Stop Action | 再生が終わったときにどうするか(Destroyで自動で消える) |
Simulation Spaceの使い分け
- 車の排気ガスや足元の土ぼこりのように「出た粒はその場に残ってほしい」→ World
- オーラのように「キャラクターにくっついて動いてほしい」→ Local
Emission(どれだけ出すか)
- Rate over Time:1秒あたりに出す数(ずっと出し続けるとき)
- Bursts:決まったタイミングで一気に出す(爆発やキラキラ)
- 「+」で追加して、Time:0、Count:30のように設定
Shape(どこから・どの向きに出すか)
- Shape:Cone(円すい)、Sphere(全方向)、Circle、Boxなど
- Radius:出てくる範囲の大きさ
Color over Lifetime / Size over Lifetime
- Color over Lifetime:時間とともに色を変える。最後を透明(Alphaを0)にすると、ふわっと消える
- Size over Lifetime:時間とともに大きさを変える。だんだん小さくして消すのが定番です
Renderer(見た目)
- Material:粒に使うマテリアル
- Render Mode:Billboard(いつもカメラの方を向く板)が基本
URPでのマテリアル
URPのプロジェクトで作ったParticle Systemには、最初からParticlesUnlitのようなURP用のマテリアルが設定されています。自分で作るときは、次のようにします。
- Projectウィンドウで右クリック>Create>Material
- Shader:Universal Render Pipeline/Particles/Unlit
- Surface Type:Transparent(半透明)
- Base Mapに、粒の形の画像(ふちがぼやけた丸など)を設定
- Particle SystemのRendererのMaterialに、このマテリアルをセット
パーティクルがピンク色になった場合は、シェーダーがURP用になっていません(3-3の記事で説明したものと同じ原因です)。
スライム設定項目が多すぎて、どこを触ればいいか分からない・・・



まずはStart Lifetime・Start Speed・Start Size・Start Colorの4つだけで十分!Restartを押しながら、少しずつ数字を変えてみてね
コインを取ったらキラキラさせる
1回だけ出るパーティクルを作る
- Hierarchyで右クリック>Effects>Particle Systemを作り、名前をCoinSparkleにする
- Mainを下記のように設定
- Duration:0.5
- Looping:チェックを外す
- Start Lifetime:0.5
- Start Speed:3
- Start Size:0.2
- Start Color:黄色
- Stop Action:Destroy
- Emission
- Rate over Time:0
- Burstsを「+」で追加して、Time:0、Count:20
- Shape:Sphere、Radius:0.2
- Size over Lifetimeにチェックを入れ、だんだん小さくなるカーブにする
- ProjectウィンドウのPrefabsフォルダにドラッグしてプレハブにし、Hierarchyのものは削除
Stop Action:Destroyにしておくと、再生が終わったときにオブジェクトが自動で消えるので、スクリプトで消す必要がありません。
スクリプトで出す
コインを取った場所に、プレハブを出します。
using UnityEngine;
public class PickupEffect : MonoBehaviour
{
[SerializeField] private ParticleSystem sparklePrefab;
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Coin"))
{
// コインの位置に、キラキラを出す(回転はプレハブのまま)
Instantiate(sparklePrefab, other.transform.position, sparklePrefab.transform.rotation);
}
}
}
- PlayerにPickupEffectを付けて、InspectorのSparkle Prefabに、CoinSparkleのプレハブをドラッグ&ドロップします
- プレハブのPlay On Awakeがチェックされているので、出した瞬間に再生されて、終わったら自動で消えます
- 6-10のCoinCollector(コインを消す)と一緒に付けて使えます。2Dゲームなら
OnTriggerEnter2D(Collider2D other)に書き換えます
再生と停止をスクリプトで切り替える
ずっと出し続けるパーティクル(ダッシュ中の土ぼこりなど)は、プレイヤーの子オブジェクトにしておき、必要なときだけ出します。
using UnityEngine;
public class DustControl : MonoBehaviour
{
[SerializeField] private ParticleSystem dust;
// 走っているときだけ土ぼこりを出す
public void SetRunning(bool isRunning)
{
if (isRunning && !dust.isPlaying)
{
dust.Play();
}
else if (!isRunning && dust.isPlaying)
{
dust.Stop();
}
}
}
Play()で出し始め、Stop()で新しく出すのをやめる(出ている粒は寿命まで残る)- 土ぼこり側のLoopingはチェック、Play On Awakeはチェックを外しておきます
よくあるエラーと対処法
エラー:パーティクルがピンク色
- 原因:マテリアルのシェーダーがURP用になっていない
- 対処法:ShaderをUniversal Render Pipeline/Particles/Unlitにする
エラー:Instantiateしても何も出ない
- 原因:プレハブのPlay On Awakeが外れている、Emissionの数が0、またはBurstsがない
- 対処法:Play On Awakeにチェック。Rate over TimeかBurstsで粒が出る設定にする
エラー:パーティクルのオブジェクトがどんどん増えて消えない
- 原因:Stop ActionがNoneのまま、またはLoopingにチェックが入っている
- 対処法:1回だけのパーティクルは、Looping:チェックなし、Stop Action:Destroyにする
エラー:粒がプレイヤーにくっついてきてしまう
- 原因:Simulation SpaceがLocal
- 対処法:出た粒をその場に残したいときは、Simulation SpaceをWorldにする
まとめ
- Particle Systemは、Hierarchyで右クリック>Effects>Particle Systemで作る
- 基本はMain(寿命・速さ・大きさ・色)、Emission(数)、Shape(出る形)
- URPでは、Universal Render Pipeline/Particlesのシェーダーを使う
- 1回だけの演出は、Looping:オフ、Bursts、Stop Action:Destroyにしてプレハブ化
- スクリプトからはInstantiateで出す、Play/Stopで切り替える
もっと凝った演出の例は、紙吹雪のエフェクトを作る【ParticleSystem-VFX-Confetti】で紹介しています。
次のステップ
- 次の12-5では、カメラとライトの基本を紹介します
- Unityスタートガイド 目次
コメント