『Unity』パーティクルシステム完全攻略:メインモジュール後編(シリーズ2)

Unity(デザイナー向け)
スポンサーリンク

はじめに

エフェクトが完成し、いざゲーム画面で動かしてみると「あれ? 思った動きと違う」と感じることがあります。
その原因の多くは、エフェクトの「座標の持ち方」や「親オブジェクトとの関係性」の理解不足にあります。

中級者デザイナーへのステップアップとして、今回は空間定義の核心である “Simulation Space” と、描画の整合性を保つための “Scaling Mode”、そしてそれらと密接に関わる Transform の扱いについて解き明かしていきましょう。


スポンサーリンク

空間の定義: “Simulation Space” の使い分け

“Simulation Space” (シミュレーション空間)は、粒子が「どこを基準に動くか」を決定する、非常に重要な項目です。

1. “Local” (ローカル)

粒子は常に、 『Particle System』 がアタッチされているゲームオブジェクトと一緒に移動します。
例えば、魔法少女のステッキの先に常にまとわりついている光のオーラなどは、この “Local” が適しています。
親が動けば、すでに発生している粒子もすべてセットで移動するため、相対的な位置関係が崩れません。

2. “World” (ワールド)

粒子は発生した瞬間に親オブジェクトから離れ、世界の座標に固定されます。
歩いた跡に残る土埃、移動する車から出る排気ガス、松明からこぼれ落ちる火の粉などは “World” に設定すべきです。
親(車や松明)が移動しても、すでに出た煙や火の粉はその場に残り続けるため、自然な「軌跡」が生まれます。

3. “Custom” (カスタム)

中級者なら使いこなしたいのがこの “Custom” です。
これは、特定のゲームオブジェクトを基準に粒子を動かす設定です。
例えば「激しく揺れる走行中の列車内」で、コップからこぼれる水しぶきのエフェクトを作る場合を考えてみましょう。

  • “World” だと、列車が走り去ると水しぶきだけが線路に取り残されます。

  • “Local” だと、列車の細かい揺れ(小刻みな振動)まで水しぶきにダイレクトに伝わり、不自然にガタついて見えます。
    ここで列車の「床」をカスタム空間に指定すれば、大きな移動には追従しつつ、細かい振動の影響を切り離したスムーズなシミュレーションが可能になります。


スポンサーリンク

スケーリングの罠: “Scaling Mode” と Transform

親オブジェクトのサイズを変えたとき、中のパーティクルが意図せず巨大化したり、逆に小さくならなかったりして困ったことはありませんか?
それを制御するのが “Scaling Mode” です。ここで Transform コンポーネントとの関係性が重要になります。

“Hierarchy” (ヒエラルキー)

親オブジェクト、そのまた親……と、階層構造にあるすべてのスケール値を掛け合わせて反映します。
直感的ではありますが、複雑な ヒエラルキー の奥深くにエフェクトを置くと、意図しない倍率がかかってしまい管理が困難になるのがデメリットです。

“Local” (ローカル)

『Particle System』 自身の Transform にあるスケール値のみを反映します。
親のスケールがどうであれ無視されるため、最も管理がしやすく、現在のゲーム開発における推奨設定と言えます。

“Shape” (シェイプ)

粒子の大きさ(”Start Size”)には影響を与えず、発生範囲(”Shape” モジュールで設定した範囲)の広さだけをスケーリングします。

デザイナーへの注意喚起:ボーンアタッチ時の作法
キャラクターのボーンなどにパーティクルをアタッチする際は、アタッチした直後にエフェクト自身の Transform を「Reset」(Position/Rotationを0、Scaleを1)にする癖をつけましょう。
特に “Scaling Mode” が “Hierarchy” になっている場合、親となるボーンに歪なスケール(1, 1.2, 1 など)が入っていると、エフェクトの形状も一緒に歪んでしまいます。
まずは「デフォルト状態」から作り始めるのが、予期せぬトラブルを防ぐ最短ルートです。


スポンサーリンク

時間の質を変える: “Simulation Speed” と “Delta Time”

“Simulation Speed” (シミュレーション速度)

エフェクト全体の再生速度を倍率で変更します。
「演出の意図に合わせて、この魔法だけスローで見せたい」といった場合に、モジュール内の各数値を書き換えることなく、ここ一点の調整でスピード感をコントロールできます。

“Delta Time” (デルタタイム)

中級者が必ず意識すべきは、 “Scaled” と “Unscaled” の違いです。

  • “Scaled”: ゲーム内の Time.timeScale の影響を受けます。ゲームがポーズ中ならエフェクトも止まります。

  • “Unscaled”: ゲームのポーズ状態を無視して再生し続けます。
    「ポーズメニューを開いている最中も、背景の装飾エフェクトやUIの演出だけは動かし続けたい」という場合は、必ずここを “Unscaled” に変更してください。


スポンサーリンク

おわりに

今回は、エフェクトを「世界のどこに配置し、どうスケールさせるか」という、空間設計の基礎を学びました。
特に Transform の状態を意識しながら “Simulation Space” を選択することは、動的なアクションゲームにおけるエフェクトの「説得力」に直結します。

次回は、いよいよ「いつ、どのくらいの密度で出すか」を司る “Emission” モジュールと、発生源の形をデザインする “Shape” モジュールの詳細仕様に迫ります。

タイトルとURLをコピーしました