この記事では、Godotにおけるパーティクルエフェクト作成において重要な、GPUParticles2DとParticleProcessMaterialの概要と各プロパティについて一覧でまとめています。
GPUParticles2DとParticleProcessMaterialの概要とともにプロパティの概要を確認し、ざっくりとどのような内容が調整できるのかを把握することを目的としています。
この記事について:
・使用しているGodotのバージョンは4.4 stableです
・2Dパーティクルを対象としているため、3Dパーティクルに関する情報は省いています。
・プロパティの並び順はGodotエディタのインスペクターに準じています
・辞書的な使い方を想定しているため、一覧性を重視し解説は短めにしています
・学習コスト低減のため、個人的によく使うものや重要(と思われる)プロパティには「★」をつけています
(★がついていないものは、用途が限定的で高度だったり、デフォルトでほぼ触らない項目になります)
GPUParticles2D
GPUParticles2Dは、Godotエンジンに搭載された2Dパーティクルシステムを取り扱うためのノードです。
GPUを活用して大量の粒子を効率よく描画できるため、ゲームに軽快で美しいエフェクトを追加できます。
例 (gif画像にしている都合でカクカクですが、実際は滑らかに表示されています):

パーティクルエフェクトノードは、粒子状の描画を行う点がポイントで、主に炎や煙、爆発のほか、雨や雪といった天候のエフェクト作成などで特に強力です。
基本プロパティ
基本プロパティでは、パーティクルの発生有無やサイクルごとのパーティクル量、テクスチャ設定など、パーティクルエフェクトの基本となる設定値を取り扱います。
プロパティ名 | 概要 |
---|---|
★ emitting | パーティクル放出の有効/無効 |
★ amount | 1回の放出サイクルごとのパーティクル数 |
★ amount_raito | amountを基準とした実際の放出量の比率。 (実際の放出量 = amount * amount_raito) |
sub_emitter | サブエミッターとして使用するGPUParticles2Dの参照 |
★ texture | パーティクルのテクスチャ。nullの場合は1×1ピクセルの正方形になる。 |
Timeプロパティ
Timeプロパティでは、パーティクルの表示時間やタイミングに関する設定が可能です。
プロパティ名 | 概要 |
---|---|
★ lifetime | パーティクルエフェクトが継続(生存)する秒数。 |
interp_to_end | 同じノードからのすべてのパーティクルを、その寿命の終わりに向かって同時に補間する |
★ one_shot | 1サイクルだけパーティクルを放出するかのフラグ |
preprocess | 指定した秒数分パーティクル処理が進行した状態で開始させる |
★ speed_scale | パーティクルエフェクトの速度 |
★ explosiveness | 爆発力。パーティクルの放出間隔を設定 0: 一定間隔でパーティクルを放出 / 1: すべてのパーティクルを同時に放出 |
★ randomness | パーティクルエフェクトの放出寿命(lifetime)のランダムレート設定。(1に近いほどばらつきが大きい) |
use_fixed_seed | seed値の仕様有無。視覚的な結果を固定したい場合に使用。 有効にすると、seedプロパティが表示。 |
fixed_fps | パーティクルシステムの固定フレームレート設定。 |
interpolate | パーティクル補間の有効/無効。fixed_fpsが画面のリフレッシュレートより低い場合に動きがスムーズになる |
fract_delta | Trueにすると分数デルタ計算が行われ、より滑らかな粒子表示効果が得られます。 |
Collisionプロパティ
Collisionプロパティでは、ParticleProcessMaterialのcollision_modeが、COLLISION_RIGIDまたCOLLISION_HIDE_ON_CONTACTの場合に適用される、パーティクルの衝突判定を設定します。
プロパティ名 | 概要 |
---|---|
collision_base_size | パーティクルの衝突半径の倍率。(パーティクルは常に球形のコリジョン形状) 設定値が「1.0」の時、スプライトの大きさに対応 |
Drawingプロパティ
Drawingプロパティでは、可視領域や前後関係など、描画にかかわる設定を行います。
プロパティ名 | 概要 |
---|---|
visibility_rect | パーティクルの可視領域を矩形で設定するプロパティ (設定領域の一部が画面内にあればパーティクルの描画が発生し、なければ省略される) |
★ local_coords | ローカル座標の使用有無。 Trueにすると、GPUParticles2Dノードの変形(拡大縮小など)がパーティクルにも影響する。 |
★ draw_order | パーティクルの描画順序(前後関係)の設定。 |
Trailsプロパティ
Trailsプロパティでは、パーティクルトレイル(軌跡)に関する設定を行います。
各プロパティは、Trail_enabledがTrue(有効)である場合にのみ適用されます。
プロパティ名 | 概要 |
---|---|
trail_enabled | パーティクルトレイル(軌跡)の有効/無効。 |
trail_lifetime | 軌跡の表示時間。 |
trail_sections | 軌跡のレンダリングに使用するセクションの数。 |
trail_section_subdivisions | 軌跡のレンダリングに使用するサブディビジョンの数。 |
ProcessMaterialプロパティ
ProcessMaterialプロパティは、パーティクルを処理するマテリアルの設定を行います。
今回の記事ではParticleProcessMaterialについての解説のみですが、ShaderMaterialの適用も可能です。
プロパティ名 | 概要 |
---|---|
★ process_material | パーティクルを処理するためのマテリアル設定。 ParticleProcessMaterialまたはShaderMaterialをアタッチ可能。 |
ParticleProcessMaterial
ParticleProcessMaterialは、パーティクルのプロパティと動作を定義するためのマテリアルで、主にGPUParticles2D/3Dノードにアタッチして使用します。

イメージとしては、
・GPUParticles2D :粒子の全体的な放出の仕方(+レンダリング)を設定
・ParticleProcessMaterial:粒子単体の挙動を設定 といった役割になります。
準備手順:
基本プロパティ
基本プロパティには、4.4時点でlifetime_randomnessのみが配置されています。
★ lifetime_randomness | 粒子単体の放出寿命(lifetime)のランダムレート設定。 (1に近いほどばらつきが大きい) |
GPUParticles2D.randomness と ParticleProcessMaterial.lifetime_randomness は、どちらもlifetime(生存寿命)のばらつきを調整するプロパティですが、その適用対象が異なるため、注意が必要です。
・GPUParticles2D.randomness :同サイクルで発生するすべての粒子に対して、lifetimeのばらつきが発生する
・ParticleProcessMaterial.lifetime_randomness:各粒子ごとにlifetimeのばらつきが発生する

ランダム化する対象が、
パーティクルエフェクト全体の継続時間ならGPUParticles2D.randomness
発生する粒子ごとの継続時間ならParticleProcessMaterial.lifetime_randomness を使用します
ParticleFlagsプロパティ
ParticleFlagsプロパティでは、パーティクルの挙動において前提条件にあたるような、各種フラグを設定します。
プロパティ名 | 概要 |
---|---|
particle_flag_align_y | パーティクルの Y 軸をその速度の方向に合わせる |
particle_flag_rotate_y | パーティクルはがY 軸を中心にangle_minだけ回転 |
particle_flag_disable_z | 粒子が Z 軸上で移動しなくなる(2Dパーティクルではデフォルトで有効になる) |
particle_flag_damping_as_friction | 減衰特性の動作を、線形減速から速度のパーセンテージに基づく減速に変更 |
Spawnプロパティ
Spawnプロパティでは、パーティクルの生成方法や、生成時の各種パラメータ(速度や方向など)を設定します。
プロパティ名 | 概要 |
---|---|
emission_shape_offset | emission_shapeで設定した領域のオフセット |
emission_shape_scale | emission_shapeで設定した領域のスケール |
★ emission_shape | パーティクルが放出される領域の形状設定。列挙型 EmissionShape で設定。 |
★ angle_min angle_max | 各粒子に適用される、初期回転値の最小/最大。 ※particle_flag_disable_zまたは、particle_flag_rotate_y が有効な場合に適用 |
angle_curve | 回転値のアニメーションに適用させるCurveTexture の設定 |
inherit_velocity_ratio | 生成時に各粒子が継承する、アタッチ先(GPUParticles2D など)の速度パーセンテージ |
velocity_pivot | 粒子の半径速度と軌道速度を計算するために使用されるピボットポイント。 (対象プロパティはAnimatedVelocity参照) |
★ direction | パーティクルの放出方向を指定 |
spread | 各粒子の初期方向 |
flatness | Y 軸に沿った広がりの量 |
★ initial_velocity_min initial_velocity_max | 各粒子に適用される、初期速度の最小/最大。 spreadやflatnessはこの値が0(初速0)では効果として現れないので注意。 |
Animated Velocityプロパティ
Animated Velocityプロパティでは、パーティクルに適用するアニメーション速度挙動の設定を行います。
イメージとしては、動きの方向性を決めるようなプロパティで、Spawnと組み合わせることで粒子がどういった挙動を取ろうとするかを設定できます。
プロパティ名 | 概要 |
---|---|
angular_velocity_min angular_velocity_max | 各粒子に適用される、初期回転速度の最小/最大。 ※particle_flag_disable_zまたは、particle_flag_rotate_y が有効な場合に適用 |
angular_velocity_curve | 粒子の回転速度に適用させるCurveTexture の設定 |
directional_velocity_min directional_velocity_max | 各粒子に適用される、(移動)速度の最小/最大。 |
directional_velocity_curve | 粒子の(移動)速度に適用させるCurveTexture の設定 |
orbit_velocity_min orbit_velocity_max | 各粒子に適用される、軌道速度(※)の最小/最大。 ※パーティクルが原点の周りを回転する動きのことで、1 秒あたりの原点の周回数で指定 |
orbit_velocity_curve | 粒子の軌道速度に適用させるCurveTexture の設定 |
radial_velocity_min / radial_velocity_max | 各粒子に適用される、半径速度(※)の最小/最大。 ※プラス値であれば原点 (velocity_pivot) から遠ざかり、マイナス値なら近づく |
radial_velocity_curve | 粒子の半径速度に適用させるCurveTexture の設定 |
★ velocity_limit_curve | パーティクルの存続期間中の最大速度を定義するCurveTexture。 ※アニメーション化された速度は減衰の影響を受けないため、ここで設定。 |
Accelerationsプロパティ
Accelerationsプロパティは、名前の通り加速に関する設定を行います。
「放出された粒子が、時間経過とともにどのように動いていくか」をこのプロパティで設定していきます。
プロパティ名 | 概要 |
---|---|
★ gravity | 粒子に適用される重力値 |
linear_accel_min / linear_accel_max | 各粒子の移動方向に対して適用される、線形加速度の最小/最大。 |
linear_accel_curve | 粒子の線形加速度に適用させるCurveTexture の設定 |
radial_accel_min / radial_accel_max | 各粒子に適用される、半径加速度(※)の最小/最大。 ※プラス値であれば原点 (velocity_pivot) から遠ざかり、マイナス値なら近づく |
radial_accel_curve | 粒子の半径加速度に適用させるCurveTexture の設定 |
tangential_accel_min / tangential_accel_max | 各粒子に適用される、接線加速度(※)の最小/最大。 ※接線加速度は粒子の速度に対して垂直であり、粒子に旋回運動を与える。 |
tangential_accel_curve | 粒子の半径加速度に適用させるCurveTexture の設定 |
★ damping_min / damping_max | 各粒子に適用される、減衰速度(※)の最小/最大。 |
damping_curve | 粒子の減衰速度に適用させるCurveTexture の設定 |
attractor_interaction_enabled | パーティクルアトラクターとの相互作用有無の設定 (3D用の機能) |
Displayプロパティ
Displayプロパティは、粒子の見た目(形や色など)に関する設定を行います。
Curveによって時間的な変化も付けられるため、豪華なエフェクトを作成する時はかなり便利に使用できます。
プロパティ名 | 概要 |
---|---|
★ scale_min / scale_max | 粒子に適用される、初期スケールの最小/最大。 |
scale_curve | 粒子の初期スケールに適用させるCurveTexture またはCurveXYZTextureの設定 |
scale_over_velocity_min / scale_over_velocity_max | scale_over_velocity_curveのスケーリングで仕様留守速度の最小/最大。 |
scale_over_velocity_curve | 粒子を指定速度に基づいてスケーリングするCurveTextureまたはCurveXYZTextureの設定 |
★ color | 粒子の初期色。GPUParticles2D が定義されている場合は、このtexture色が乗算。 |
★ color_ramp | 粒子の色変化に適用させる、GradientTexture1Dの設定 ※シェーダーを使用する場合は、「ALBEDO *= COLOR.rgb;fragment()」の適用が必要な点に注意 |
color_initial_ramp | 粒子の初期色の変化に適用させる、GradientTexture1Dの設定 |
alpha_curve | 粒子のアルファ値(透明度)に適用させるCurveTexture の設定 |
★ emission_curve | 粒子の色変化に適用させるCurveTexture の設定 |
hue_variation_min / hue_variation_max | 粒子に適用される、色相変化の最小/最大。 |
hue_variation_curve | 粒子の色相変化に適用させるCurveTexture の設定 |
anim_speed_min / anim_speed_max | 粒子に適用される、アニメーション速度のの最小/最大。 |
anim_speed_curve | 粒子のアニメーション速度に適用させるCurveTexture の設定 |
anim_offset_min / anim_offset_max | 粒子に適用される、アニメーションオフセット値の最小/最大。 (0 が最初のフレーム、1 が最後のフレーム) |
anim_offset_curve | 粒子のアニメーションオフセットに適用させるCurveTexture の設定 |
Turbulenceプロパティ
Turbulenceプロパティは、乱流効果(=要はノイズによる揺らぎ)の適用有無と、適用する場合の各種パラメータの設定を行います。
プロパティ名 | 概要 |
---|---|
★ turbulence_enabled | 乱流効果の有効化。設定したノイズに応じてパーティクルの動きに変化をつける。 |
turbulence_noise_strength | 乱流ノイズの強さ |
turbulence_noise_scale | 乱流ノイズのスケール。(値が大きいほどノイズが滑らかになる) |
turbulence_noise_speed | 乱流フィールドのスクロール速度 |
turbulence_noise_speed_random | 乱流フィールドのその場での変化率。(値が 0.0 の場合、パターンは固定) |
turbulence_influence_min / turbulence_influence_max | 各粒子に対する乱流影響量の最小/最大 (実際の影響量は最小~最大の値の間でランダムな値として計算される) |
turbulence_initial_displacement_min / turbulence_initial_displacement_max | 各粒子に対する発生位置変位の最小/最大 (実際の影響量は最小~最大の値の間でランダムな値として計算される) |
turbulence_influence_over_life | 粒子の乱流効果の影響に適用させるCurveTexture の設定 |
Collisionプロパティ
Collisionプロパティは、パーティクルの衝突判定に関する設定を行います。デフォルトでは無効ですが、モードを選択すると対応したプロパティが表示され、必要なパラメータを編集することが可能になります。(今回説明は割愛します)
プロパティ名 | 概要 |
---|---|
collision_mode | パーティクルの衝突モードの選択。 |
collision_use_scale | パーティクルのスケールを子リジョンにも使用する |
SubEmitter
SubEmitterプロパティは、サブエミッターモードの設定と、必要パラメータの設定を行います。
サブエミッターは、ざっくり言うと「パーティクルからパーティクルを放出する」仕組みのことで、花火のようなエフェクト作成で活躍する機能ですが、やや複雑な内容となるため、本記事内では説明を割愛します。
プロパティ名 | 概要 |
---|---|
sub_emitter_mode | サブエミッターモードの選択。 |
sub_emitter_keep_velocity | サブエミッターが生成時に親パーティクルの速度を継承する |
まとめ
以上がGPUParticles2DとParticleProcessMaterialと各プロパティの概要となります。
設定可能な項目がかなり多く、初めのうちは混乱するかと思いますが、
・パーティクルエフェクト全体を設定するGPUParticles2Dのプロパティ
・そこで放出される各粒子単体の挙動を設定するParticleProcessMaterial
といった関係を理解し、「これは使えそう/使ってみたい」といったプロパティをいろいろ調整していくと、学習とともに新たな発見も得られるかと思います。
また、「Godot Particle」などで検索をかけると、様々なチュートリアル動画やエフェクトの作成例などもヒットしますので、そちらをベースに各種プロパティを変化させ、その結果がどうなるかを見てみるのもおすすめです。
コメント