CPUParticles2D

Inherits: Node2D < CanvasItem < Node < Object

CPU-based 2D particle emitter.

Description

CPU-based 2D particle node used to create a variety of particle systems and effects.

See also Particles2D, which provides the same functionality with hardware acceleration, but may not run on older devices.

Note: Unlike Particles2D, the visibility rect is generated on-the-fly and doesn't need to be configured by the user.

Tutorials

Properties

int

amount

8

float

angle

0.0

Curve

angle_curve

float

angle_random

0.0

float

angular_velocity

0.0

Curve

angular_velocity_curve

float

angular_velocity_random

0.0

float

anim_offset

0.0

Curve

anim_offset_curve

float

anim_offset_random

0.0

float

anim_speed

0.0

Curve

anim_speed_curve

float

anim_speed_random

0.0

Color

color

Color( 1, 1, 1, 1 )

Gradient

color_initial_ramp

Gradient

color_ramp

float

damping

0.0

Curve

damping_curve

float

damping_random

0.0

Vector2

direction

Vector2( 1, 0 )

DrawOrder

draw_order

0

PoolColorArray

emission_colors

PoolVector2Array

emission_normals

PoolVector2Array

emission_points

Vector2

emission_rect_extents

EmissionShape

emission_shape

0

float

emission_sphere_radius

bool

emitting

true

float

explosiveness

0.0

int

fixed_fps

0

bool

flag_align_y

false

bool

fract_delta

true

Vector2

gravity

Vector2( 0, 98 )

float

hue_variation

0.0

Curve

hue_variation_curve

float

hue_variation_random

0.0

float

initial_velocity

0.0

float

initial_velocity_random

0.0

float

lifetime

1.0

float

lifetime_randomness

0.0

float

linear_accel

0.0

Curve

linear_accel_curve

float

linear_accel_random

0.0

bool

local_coords

true

Texture

normalmap

bool

one_shot

false

float

orbit_velocity

0.0

Curve

orbit_velocity_curve

float

orbit_velocity_random

0.0

PhysicsInterpolationMode

physics_interpolation_mode

1 (overrides Node)

float

preprocess

0.0

float

radial_accel

0.0

Curve

radial_accel_curve

float

radial_accel_random

0.0

float

randomness

0.0

float

scale_amount

1.0

Curve

scale_amount_curve

float

scale_amount_random

0.0

float

speed_scale

1.0

float

spread

45.0

float

tangential_accel

0.0

Curve

tangential_accel_curve

float

tangential_accel_random

0.0

Texture

texture

Methods

void

convert_from_particles ( Node particles )

float

get_param ( Parameter param ) const

Curve

get_param_curve ( Parameter param ) const

float

get_param_randomness ( Parameter param ) const

bool

get_particle_flag ( Flags flag ) const

void

restart ( )

void

set_param ( Parameter param, float value )

void

set_param_curve ( Parameter param, Curve curve )

void

set_param_randomness ( Parameter param, float randomness )

void

set_particle_flag ( Flags flag, bool enable )


Enumerations

enum DrawOrder:

DrawOrder DRAW_ORDER_INDEX = 0

Particles are drawn in the order emitted.

DrawOrder DRAW_ORDER_LIFETIME = 1

Particles are drawn in order of remaining lifetime.


enum Parameter:

Parameter PARAM_INITIAL_LINEAR_VELOCITY = 0

Use with set_param, set_param_randomness, and set_param_curve to set initial velocity properties.

Parameter PARAM_ANGULAR_VELOCITY = 1

Use with set_param, set_param_randomness, and set_param_curve to set angular velocity properties.

Parameter PARAM_ORBIT_VELOCITY = 2

Use with set_param, set_param_randomness, and set_param_curve to set orbital velocity properties.

Parameter PARAM_LINEAR_ACCEL = 3

Use with set_param, set_param_randomness, and set_param_curve to set linear acceleration properties.

Parameter PARAM_RADIAL_ACCEL = 4

Use with set_param, set_param_randomness, and set_param_curve to set radial acceleration properties.

Parameter PARAM_TANGENTIAL_ACCEL = 5

Use with set_param, set_param_randomness, and set_param_curve to set tangential acceleration properties.

Parameter PARAM_DAMPING = 6

Use with set_param, set_param_randomness, and set_param_curve to set damping properties.

Parameter PARAM_ANGLE = 7

Use with set_param, set_param_randomness, and set_param_curve to set angle properties.

Parameter PARAM_SCALE = 8

Use with set_param, set_param_randomness, and set_param_curve to set scale properties.

Parameter PARAM_HUE_VARIATION = 9

Use with set_param, set_param_randomness, and set_param_curve to set hue variation properties.

Parameter PARAM_ANIM_SPEED = 10

Use with set_param, set_param_randomness, and set_param_curve to set animation speed properties.

Parameter PARAM_ANIM_OFFSET = 11

Use with set_param, set_param_randomness, and set_param_curve to set animation offset properties.

Parameter PARAM_MAX = 12

Represents the size of the Parameter enum.


enum Flags:

Flags FLAG_ALIGN_Y_TO_VELOCITY = 0

Use with set_particle_flag to set flag_align_y.

Flags FLAG_ROTATE_Y = 1

Present for consistency with 3D particle nodes, not used in 2D.

Flags FLAG_DISABLE_Z = 2

Present for consistency with 3D particle nodes, not used in 2D.

Flags FLAG_MAX = 3

Represents the size of the Flags enum.


enum EmissionShape:

EmissionShape EMISSION_SHAPE_POINT = 0

All particles will be emitted from a single point.

EmissionShape EMISSION_SHAPE_SPHERE = 1

Particles will be emitted on the surface of a sphere flattened to two dimensions.

EmissionShape EMISSION_SHAPE_RECTANGLE = 2

Particles will be emitted in the area of a rectangle.

EmissionShape EMISSION_SHAPE_POINTS = 3

Particles will be emitted at a position chosen randomly among emission_points. Particle color will be modulated by emission_colors.

EmissionShape EMISSION_SHAPE_DIRECTED_POINTS = 4

Particles will be emitted at a position chosen randomly among emission_points. Particle velocity and rotation will be set based on emission_normals. Particle color will be modulated by emission_colors.

EmissionShape EMISSION_SHAPE_MAX = 5

Represents the size of the EmissionShape enum.


Property Descriptions

int amount = 8

  • void set_amount ( int value )

  • int get_amount ( )

The number of particles emitted in one emission cycle (corresponding to the lifetime).

Note: Changing amount will reset the particle emission, therefore removing all particles that were already emitted before changing amount.


float angle = 0.0

Initial rotation applied to each particle, in degrees.


Curve angle_curve

Each particle's rotation will be animated along this Curve.


float angle_random = 0.0

Rotation randomness ratio.


float angular_velocity = 0.0

Initial angular velocity applied to each particle in degrees per second. Sets the speed of rotation of the particle.


Curve angular_velocity_curve

Each particle's angular velocity will vary along this Curve.


float angular_velocity_random = 0.0

Angular velocity randomness ratio.


float anim_offset = 0.0

Particle animation offset.


Curve anim_offset_curve

Each particle's animation offset will vary along this Curve.


float anim_offset_random = 0.0

Animation offset randomness ratio.


float anim_speed = 0.0

Particle animation speed.


Curve anim_speed_curve

Each particle's animation speed will vary along this Curve.


float anim_speed_random = 0.0

Animation speed randomness ratio.


Color color = Color( 1, 1, 1, 1 )

  • void set_color ( Color value )

  • Color get_color ( )

Each particle's initial color. If texture is defined, it will be multiplied by this color.


Gradient color_initial_ramp

  • void set_color_initial_ramp ( Gradient value )

  • Gradient get_color_initial_ramp ( )

Each particle's initial color will vary along this GradientTexture (multiplied with color).


Gradient color_ramp

Each particle's color will vary along this Gradient (multiplied with color).


float damping = 0.0

The rate at which particles lose velocity.


Curve damping_curve

Damping will vary along this Curve.


float damping_random = 0.0

Damping randomness ratio.


Vector2 direction = Vector2( 1, 0 )

Unit vector specifying the particles' emission direction.


DrawOrder draw_order = 0

Particle draw order. Uses DrawOrder values.


PoolColorArray emission_colors

Sets the Colors to modulate particles by when using EMISSION_SHAPE_POINTS or EMISSION_SHAPE_DIRECTED_POINTS.


PoolVector2Array emission_normals

Sets the direction the particles will be emitted in when using EMISSION_SHAPE_DIRECTED_POINTS.


PoolVector2Array emission_points

Sets the initial positions to spawn particles when using EMISSION_SHAPE_POINTS or EMISSION_SHAPE_DIRECTED_POINTS.


Vector2 emission_rect_extents

  • void set_emission_rect_extents ( Vector2 value )

  • Vector2 get_emission_rect_extents ( )

The rectangle's extents if emission_shape is set to EMISSION_SHAPE_RECTANGLE.


EmissionShape emission_shape = 0

Particles will be emitted inside this region. See EmissionShape for possible values.


float emission_sphere_radius

  • void set_emission_sphere_radius ( float value )

  • float get_emission_sphere_radius ( )

The sphere's radius if emission_shape is set to EMISSION_SHAPE_SPHERE.


bool emitting = true

  • void set_emitting ( bool value )

  • bool is_emitting ( )

If true, particles are being emitted.


float explosiveness = 0.0

  • void set_explosiveness_ratio ( float value )

  • float 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.


int fixed_fps = 0

  • void set_fixed_fps ( int value )

  • int 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.


bool flag_align_y = false

  • void set_particle_flag ( Flags flag, bool enable )

  • bool get_particle_flag ( Flags flag ) const

Align Y axis of particle with the direction of its velocity.


bool fract_delta = true

  • void set_fractional_delta ( bool value )

  • bool get_fractional_delta ( )

If true, results in fractional delta calculation which has a smoother particles display effect.


Vector2 gravity = Vector2( 0, 98 )

Gravity applied to every particle.


float hue_variation = 0.0

Initial hue variation applied to each particle.


Curve hue_variation_curve

Each particle's hue will vary along this Curve.


float hue_variation_random = 0.0

Hue variation randomness ratio.


float initial_velocity = 0.0

Initial velocity magnitude for each particle. Direction comes from spread and the node's orientation.


float initial_velocity_random = 0.0

Initial velocity randomness ratio.


float lifetime = 1.0

  • void set_lifetime ( float value )

  • float get_lifetime ( )

The amount of time each particle will exist (in seconds).


float lifetime_randomness = 0.0

  • void set_lifetime_randomness ( float value )

  • float get_lifetime_randomness ( )

Particle lifetime randomness ratio.


float linear_accel = 0.0

Linear acceleration applied to each particle in the direction of motion.


Curve linear_accel_curve

Each particle's linear acceleration will vary along this Curve.


float linear_accel_random = 0.0

Linear acceleration randomness ratio.


bool local_coords = true

  • void set_use_local_coordinates ( bool value )

  • bool get_use_local_coordinates ( )

If true, particles use the parent node's coordinate space. If false, they use global coordinates.


Texture normalmap

Normal map to be used for the texture property.

Note: Redot expects the normal map to use X+, Y-, and Z+ coordinates. See this page for a comparison of normal map coordinates expected by popular engines.


bool one_shot = false

  • void set_one_shot ( bool value )

  • bool get_one_shot ( )

If true, only one emission cycle occurs. If set true during a cycle, emission will stop at the cycle's end.


float orbit_velocity = 0.0

Orbital velocity applied to each particle. Makes the particles circle around origin. Specified in number of full rotations around origin per second.


Curve orbit_velocity_curve

Each particle's orbital velocity will vary along this Curve.


float orbit_velocity_random = 0.0

Orbital velocity randomness ratio.


float preprocess = 0.0

  • void set_pre_process_time ( float value )

  • float get_pre_process_time ( )

Particle system starts as if it had already run for this many seconds.


float radial_accel = 0.0

Radial acceleration applied to each particle. Makes particle accelerate away from origin.


Curve radial_accel_curve

Each particle's radial acceleration will vary along this Curve.


float radial_accel_random = 0.0

Radial acceleration randomness ratio.


float randomness = 0.0

  • void set_randomness_ratio ( float value )

  • float get_randomness_ratio ( )

Emission lifetime randomness ratio.


float scale_amount = 1.0

Initial scale applied to each particle. This can be set to a negative value to flip the particle on both axes.


Curve scale_amount_curve

Each particle's scale will vary along this Curve.


float scale_amount_random = 0.0

Scale randomness ratio.


float speed_scale = 1.0

  • void set_speed_scale ( float value )

  • float get_speed_scale ( )

Particle system's running speed scaling ratio. A value of 0 can be used to pause the particles.


float spread = 45.0

  • void set_spread ( float value )

  • float get_spread ( )

Each particle's initial direction range from +spread to -spread degrees.


float tangential_accel = 0.0

Tangential acceleration applied to each particle. Tangential acceleration is perpendicular to the particle's velocity giving the particles a swirling motion.


Curve tangential_accel_curve

Each particle's tangential acceleration will vary along this Curve.


float tangential_accel_random = 0.0

Tangential acceleration randomness ratio.


Texture texture

Particle texture. If null, particles will be squares.


Method Descriptions

void convert_from_particles ( Node particles )

Sets this node's properties to match a given Particles2D node with an assigned ParticlesMaterial.


float get_param ( Parameter param ) const

Returns the base value of the parameter specified by Parameter.


Curve get_param_curve ( Parameter param ) const

Returns the Curve of the parameter specified by Parameter.


float get_param_randomness ( Parameter param ) const

Returns the randomness factor of the parameter specified by Parameter.


bool get_particle_flag ( Flags flag ) const

Returns the enabled state of the given flag (see Flags for options).


void restart ( )

Restarts the particle emitter.


void set_param ( Parameter param, float value )

Sets the base value of the parameter specified by Parameter.


void set_param_curve ( Parameter param, Curve curve )

Sets the Curve of the parameter specified by Parameter.


void set_param_randomness ( Parameter param, float randomness )

Sets the randomness factor of the parameter specified by Parameter.


void set_particle_flag ( Flags flag, bool enable )

Enables or disables the given flag (see Flags for options).