:github_url: hide .. Generated automatically by doc/tools/make_rst.py in Godot's source tree. .. DO NOT EDIT THIS FILE, but the GPUParticles2D.xml source instead. .. The source is found in doc/classes or modules//doc_classes. .. _class_GPUParticles2D: GPUParticles2D ============== **Inherits:** :ref:`Node2D` **<** :ref:`CanvasItem` **<** :ref:`Node` **<** :ref:`Object` 2D particle emitter. Description ----------- 2D particle node used to create a variety of particle systems and effects. ``GPUParticles2D`` features an emitter that generates some number of particles at a given rate. Use the ``process_material`` property to add a :ref:`ParticlesMaterial` to configure particle appearance and behavior. Alternatively, you can add a :ref:`ShaderMaterial` which will be applied to all particles. Tutorials --------- - :doc:`Particle systems (2D) <../tutorials/2d/particle_systems_2d>` - `2D Dodge The Creeps Demo `__ Properties ---------- +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+ | :ref:`int` | :ref:`amount` | ``8`` | +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+ | :ref:`float` | :ref:`collision_base_size` | ``1.0`` | +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+ | :ref:`DrawOrder` | :ref:`draw_order` | ``1`` | +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+ | :ref:`bool` | :ref:`emitting` | ``true`` | +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+ | :ref:`float` | :ref:`explosiveness` | ``0.0`` | +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+ | :ref:`int` | :ref:`fixed_fps` | ``30`` | +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+ | :ref:`bool` | :ref:`fract_delta` | ``true`` | +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+ | :ref:`float` | :ref:`lifetime` | ``1.0`` | +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+ | :ref:`bool` | :ref:`local_coords` | ``true`` | +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+ | :ref:`bool` | :ref:`one_shot` | ``false`` | +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+ | :ref:`float` | :ref:`preprocess` | ``0.0`` | +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+ | :ref:`Material` | :ref:`process_material` | | +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+ | :ref:`float` | :ref:`randomness` | ``0.0`` | +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+ | :ref:`float` | :ref:`speed_scale` | ``1.0`` | +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+ | :ref:`NodePath` | :ref:`sub_emitter` | ``NodePath("")`` | +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+ | :ref:`Texture2D` | :ref:`texture` | | +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+ | :ref:`bool` | :ref:`trail_enabled` | ``false`` | +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+ | :ref:`float` | :ref:`trail_length_secs` | ``0.3`` | +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+ | :ref:`int` | :ref:`trail_section_subdivisions` | ``4`` | +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+ | :ref:`int` | :ref:`trail_sections` | ``8`` | +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+ | :ref:`Rect2` | :ref:`visibility_rect` | ``Rect2(-100, -100, 200, 200)`` | +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+ Methods ------- +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Rect2` | :ref:`capture_rect` **(** **)** |const| | +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`emit_particle` **(** :ref:`Transform2D` xform, :ref:`Vector2` velocity, :ref:`Color` color, :ref:`Color` custom, :ref:`int` flags **)** | +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`restart` **(** **)** | +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ Enumerations ------------ .. _enum_GPUParticles2D_DrawOrder: .. _class_GPUParticles2D_constant_DRAW_ORDER_INDEX: .. _class_GPUParticles2D_constant_DRAW_ORDER_LIFETIME: .. _class_GPUParticles2D_constant_DRAW_ORDER_REVERSE_LIFETIME: enum **DrawOrder**: - **DRAW_ORDER_INDEX** = **0** --- Particles are drawn in the order emitted. - **DRAW_ORDER_LIFETIME** = **1** --- Particles are drawn in order of remaining lifetime. - **DRAW_ORDER_REVERSE_LIFETIME** = **2** ---- .. _enum_GPUParticles2D_EmitFlags: .. _class_GPUParticles2D_constant_EMIT_FLAG_POSITION: .. _class_GPUParticles2D_constant_EMIT_FLAG_ROTATION_SCALE: .. _class_GPUParticles2D_constant_EMIT_FLAG_VELOCITY: .. _class_GPUParticles2D_constant_EMIT_FLAG_COLOR: .. _class_GPUParticles2D_constant_EMIT_FLAG_CUSTOM: enum **EmitFlags**: - **EMIT_FLAG_POSITION** = **1** --- Particle starts at the specified position. - **EMIT_FLAG_ROTATION_SCALE** = **2** --- Particle starts with specified rotation and scale. - **EMIT_FLAG_VELOCITY** = **4** --- Particle starts with the specified velocity vector, which defines the emission direction and speed. - **EMIT_FLAG_COLOR** = **8** --- Particle starts with specified color. - **EMIT_FLAG_CUSTOM** = **16** --- Particle starts with specified ``CUSTOM`` data. Property Descriptions --------------------- .. _class_GPUParticles2D_property_amount: - :ref:`int` **amount** +-----------+-------------------+ | *Default* | ``8`` | +-----------+-------------------+ | *Setter* | set_amount(value) | +-----------+-------------------+ | *Getter* | get_amount() | +-----------+-------------------+ Number of particles emitted in one emission cycle. ---- .. _class_GPUParticles2D_property_collision_base_size: - :ref:`float` **collision_base_size** +-----------+--------------------------------+ | *Default* | ``1.0`` | +-----------+--------------------------------+ | *Setter* | set_collision_base_size(value) | +-----------+--------------------------------+ | *Getter* | get_collision_base_size() | +-----------+--------------------------------+ ---- .. _class_GPUParticles2D_property_draw_order: - :ref:`DrawOrder` **draw_order** +-----------+-----------------------+ | *Default* | ``1`` | +-----------+-----------------------+ | *Setter* | set_draw_order(value) | +-----------+-----------------------+ | *Getter* | get_draw_order() | +-----------+-----------------------+ Particle draw order. Uses :ref:`DrawOrder` values. ---- .. _class_GPUParticles2D_property_emitting: - :ref:`bool` **emitting** +-----------+---------------------+ | *Default* | ``true`` | +-----------+---------------------+ | *Setter* | set_emitting(value) | +-----------+---------------------+ | *Getter* | is_emitting() | +-----------+---------------------+ If ``true``, particles are being emitted. ---- .. _class_GPUParticles2D_property_explosiveness: - :ref:`float` **explosiveness** +-----------+--------------------------------+ | *Default* | ``0.0`` | +-----------+--------------------------------+ | *Setter* | set_explosiveness_ratio(value) | +-----------+--------------------------------+ | *Getter* | get_explosiveness_ratio() | +-----------+--------------------------------+ How rapidly particles in an emission cycle are emitted. If greater than ``0``, there will be a gap in emissions before the next cycle begins. ---- .. _class_GPUParticles2D_property_fixed_fps: - :ref:`int` **fixed_fps** +-----------+----------------------+ | *Default* | ``30`` | +-----------+----------------------+ | *Setter* | set_fixed_fps(value) | +-----------+----------------------+ | *Getter* | get_fixed_fps() | +-----------+----------------------+ The particle system's frame rate is fixed to a value. For instance, changing the value to 2 will make the particles render at 2 frames per second. Note this does not slow down the simulation of the particle system itself. ---- .. _class_GPUParticles2D_property_fract_delta: - :ref:`bool` **fract_delta** +-----------+-----------------------------+ | *Default* | ``true`` | +-----------+-----------------------------+ | *Setter* | set_fractional_delta(value) | +-----------+-----------------------------+ | *Getter* | get_fractional_delta() | +-----------+-----------------------------+ If ``true``, results in fractional delta calculation which has a smoother particles display effect. ---- .. _class_GPUParticles2D_property_lifetime: - :ref:`float` **lifetime** +-----------+---------------------+ | *Default* | ``1.0`` | +-----------+---------------------+ | *Setter* | set_lifetime(value) | +-----------+---------------------+ | *Getter* | get_lifetime() | +-----------+---------------------+ Amount of time each particle will exist. ---- .. _class_GPUParticles2D_property_local_coords: - :ref:`bool` **local_coords** +-----------+----------------------------------+ | *Default* | ``true`` | +-----------+----------------------------------+ | *Setter* | set_use_local_coordinates(value) | +-----------+----------------------------------+ | *Getter* | get_use_local_coordinates() | +-----------+----------------------------------+ If ``true``, particles use the parent node's coordinate space. If ``false``, they use global coordinates. ---- .. _class_GPUParticles2D_property_one_shot: - :ref:`bool` **one_shot** +-----------+---------------------+ | *Default* | ``false`` | +-----------+---------------------+ | *Setter* | set_one_shot(value) | +-----------+---------------------+ | *Getter* | get_one_shot() | +-----------+---------------------+ If ``true``, only one emission cycle occurs. If set ``true`` during a cycle, emission will stop at the cycle's end. ---- .. _class_GPUParticles2D_property_preprocess: - :ref:`float` **preprocess** +-----------+-----------------------------+ | *Default* | ``0.0`` | +-----------+-----------------------------+ | *Setter* | set_pre_process_time(value) | +-----------+-----------------------------+ | *Getter* | get_pre_process_time() | +-----------+-----------------------------+ Particle system starts as if it had already run for this many seconds. ---- .. _class_GPUParticles2D_property_process_material: - :ref:`Material` **process_material** +----------+-----------------------------+ | *Setter* | set_process_material(value) | +----------+-----------------------------+ | *Getter* | get_process_material() | +----------+-----------------------------+ :ref:`Material` for processing particles. Can be a :ref:`ParticlesMaterial` or a :ref:`ShaderMaterial`. ---- .. _class_GPUParticles2D_property_randomness: - :ref:`float` **randomness** +-----------+-----------------------------+ | *Default* | ``0.0`` | +-----------+-----------------------------+ | *Setter* | set_randomness_ratio(value) | +-----------+-----------------------------+ | *Getter* | get_randomness_ratio() | +-----------+-----------------------------+ Emission lifetime randomness ratio. ---- .. _class_GPUParticles2D_property_speed_scale: - :ref:`float` **speed_scale** +-----------+------------------------+ | *Default* | ``1.0`` | +-----------+------------------------+ | *Setter* | set_speed_scale(value) | +-----------+------------------------+ | *Getter* | get_speed_scale() | +-----------+------------------------+ Particle system's running speed scaling ratio. A value of ``0`` can be used to pause the particles. ---- .. _class_GPUParticles2D_property_sub_emitter: - :ref:`NodePath` **sub_emitter** +-----------+------------------------+ | *Default* | ``NodePath("")`` | +-----------+------------------------+ | *Setter* | set_sub_emitter(value) | +-----------+------------------------+ | *Getter* | get_sub_emitter() | +-----------+------------------------+ The :ref:`NodePath` to the ``GPUParticles2D`` used for sub-emissions. ---- .. _class_GPUParticles2D_property_texture: - :ref:`Texture2D` **texture** +----------+--------------------+ | *Setter* | set_texture(value) | +----------+--------------------+ | *Getter* | get_texture() | +----------+--------------------+ Particle texture. If ``null``, particles will be squares. ---- .. _class_GPUParticles2D_property_trail_enabled: - :ref:`bool` **trail_enabled** +-----------+--------------------------+ | *Default* | ``false`` | +-----------+--------------------------+ | *Setter* | set_trail_enabled(value) | +-----------+--------------------------+ | *Getter* | is_trail_enabled() | +-----------+--------------------------+ ---- .. _class_GPUParticles2D_property_trail_length_secs: - :ref:`float` **trail_length_secs** +-----------+-------------------------+ | *Default* | ``0.3`` | +-----------+-------------------------+ | *Setter* | set_trail_length(value) | +-----------+-------------------------+ | *Getter* | get_trail_length() | +-----------+-------------------------+ ---- .. _class_GPUParticles2D_property_trail_section_subdivisions: - :ref:`int` **trail_section_subdivisions** +-----------+---------------------------------------+ | *Default* | ``4`` | +-----------+---------------------------------------+ | *Setter* | set_trail_section_subdivisions(value) | +-----------+---------------------------------------+ | *Getter* | get_trail_section_subdivisions() | +-----------+---------------------------------------+ ---- .. _class_GPUParticles2D_property_trail_sections: - :ref:`int` **trail_sections** +-----------+---------------------------+ | *Default* | ``8`` | +-----------+---------------------------+ | *Setter* | set_trail_sections(value) | +-----------+---------------------------+ | *Getter* | get_trail_sections() | +-----------+---------------------------+ ---- .. _class_GPUParticles2D_property_visibility_rect: - :ref:`Rect2` **visibility_rect** +-----------+---------------------------------+ | *Default* | ``Rect2(-100, -100, 200, 200)`` | +-----------+---------------------------------+ | *Setter* | set_visibility_rect(value) | +-----------+---------------------------------+ | *Getter* | get_visibility_rect() | +-----------+---------------------------------+ The :ref:`Rect2` that determines the node's region which needs to be visible on screen for the particle system to be active. Grow the rect if particles suddenly appear/disappear when the node enters/exits the screen. The :ref:`Rect2` can be grown via code or with the **Particles → Generate Visibility Rect** editor tool. Method Descriptions ------------------- .. _class_GPUParticles2D_method_capture_rect: - :ref:`Rect2` **capture_rect** **(** **)** |const| Returns a rectangle containing the positions of all existing particles. ---- .. _class_GPUParticles2D_method_emit_particle: - void **emit_particle** **(** :ref:`Transform2D` xform, :ref:`Vector2` velocity, :ref:`Color` color, :ref:`Color` custom, :ref:`int` flags **)** Emits a single particle. Whether ``xform``, ``velocity``, ``color`` and ``custom`` are applied depends on the value of ``flags``. See :ref:`EmitFlags`. ---- .. _class_GPUParticles2D_method_restart: - void **restart** **(** **)** Restarts all the existing particles. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`