CPUParticles2D

Наследует: Node2D < CanvasItem < Node < Object

Двумерный излучатель частиц на базе ЦП (CPU).

Описание

Узел 2D-частиц на базе ЦП, используемый для создания различных систем частиц и эффектов.

См. также GPUParticles2D, который обеспечивает ту же функциональность с аппаратным ускорением, но может не работать на старых устройствах.

Обучающие материалы

Свойства

int

amount

8

Curve

angle_curve

float

angle_max

0.0

float

angle_min

0.0

Curve

angular_velocity_curve

float

angular_velocity_max

0.0

float

angular_velocity_min

0.0

Curve

anim_offset_curve

float

anim_offset_max

0.0

float

anim_offset_min

0.0

Curve

anim_speed_curve

float

anim_speed_max

0.0

float

anim_speed_min

0.0

Color

color

Color(1, 1, 1, 1)

Gradient

color_initial_ramp

Gradient

color_ramp

Curve

damping_curve

float

damping_max

0.0

float

damping_min

0.0

Vector2

direction

Vector2(1, 0)

DrawOrder

draw_order

0

PackedColorArray

emission_colors

PackedVector2Array

emission_normals

PackedVector2Array

emission_points

Vector2

emission_rect_extents

float

emission_ring_inner_radius

float

emission_ring_radius

EmissionShape

emission_shape

0

float

emission_sphere_radius

bool

emitting

true

float

explosiveness

0.0

int

fixed_fps

0

bool

fract_delta

true

Vector2

gravity

Vector2(0, 980)

Curve

hue_variation_curve

float

hue_variation_max

0.0

float

hue_variation_min

0.0

float

initial_velocity_max

0.0

float

initial_velocity_min

0.0

float

lifetime

1.0

float

lifetime_randomness

0.0

Curve

linear_accel_curve

float

linear_accel_max

0.0

float

linear_accel_min

0.0

bool

local_coords

false

bool

one_shot

false

Curve

orbit_velocity_curve

float

orbit_velocity_max

0.0

float

orbit_velocity_min

0.0

bool

particle_flag_align_y

false

PhysicsInterpolationMode

physics_interpolation_mode

2 (overrides Node)

float

preprocess

0.0

Curve

radial_accel_curve

float

radial_accel_max

0.0

float

radial_accel_min

0.0

float

randomness

0.0

Curve

scale_amount_curve

float

scale_amount_max

1.0

float

scale_amount_min

1.0

Curve

scale_curve_x

Curve

scale_curve_y

int

seed

0

float

speed_scale

1.0

bool

split_scale

false

float

spread

45.0

Curve

tangential_accel_curve

float

tangential_accel_max

0.0

float

tangential_accel_min

0.0

Texture2D

texture

bool

use_fixed_seed

false

Методы

void

convert_from_particles(particles: Node)

Curve

get_param_curve(param: Parameter) const

float

get_param_max(param: Parameter) const

float

get_param_min(param: Parameter) const

bool

get_particle_flag(particle_flag: ParticleFlags) const

void

request_particles_process(process_time: float)

void

restart(keep_seed: bool = false)

void

set_param_curve(param: Parameter, curve: Curve)

void

set_param_max(param: Parameter, value: float)

void

set_param_min(param: Parameter, value: float)

void

set_particle_flag(particle_flag: ParticleFlags, enable: bool)


Сигналы

finished() 🔗

Выпускается, когда все активные частицы завершили обработку. Когда one_shot отключен, частицы будут обрабатываться непрерывно, поэтому это никогда не выпускается.


Перечисления

enum DrawOrder: 🔗

DrawOrder DRAW_ORDER_INDEX = 0

Частицы рисуются в порядке испускания.

DrawOrder DRAW_ORDER_LIFETIME = 1

Частицы рисуются в порядке оставшегося времени жизни. Другими словами, частица с наибольшим временем жизни рисуется спереди.


enum Parameter: 🔗

Parameter PARAM_INITIAL_LINEAR_VELOCITY = 0

Используйте с set_param_min(), set_param_max() и set_param_curve() для установки начальных свойств скорости.

Parameter PARAM_ANGULAR_VELOCITY = 1

Используйте с set_param_min(), set_param_max() и set_param_curve() для установки свойств угловой скорости.

Parameter PARAM_ORBIT_VELOCITY = 2

Используйте с set_param_min(), set_param_max() и set_param_curve() для задания свойств орбитальной скорости.

Parameter PARAM_LINEAR_ACCEL = 3

Используйте с set_param_min(), set_param_max() и set_param_curve() для установки свойств линейного ускорения.

Parameter PARAM_RADIAL_ACCEL = 4

Используйте с set_param_min(), set_param_max() и set_param_curve() для установки свойств радиального ускорения.

Parameter PARAM_TANGENTIAL_ACCEL = 5

Используйте с set_param_min(), set_param_max() и set_param_curve() для установки свойств тангенциального ускорения.

Parameter PARAM_DAMPING = 6

Используйте с set_param_min(), set_param_max() и set_param_curve() для установки свойств демпфирования.

Parameter PARAM_ANGLE = 7

Используйте с set_param_min(), set_param_max() и set_param_curve() для установки свойств угла.

Parameter PARAM_SCALE = 8

Используйте с set_param_min(), set_param_max() и set_param_curve() для установки свойств масштаба.

Parameter PARAM_HUE_VARIATION = 9

Используйте с set_param_min(), set_param_max() и set_param_curve() для установки свойств изменения оттенка.

Parameter PARAM_ANIM_SPEED = 10

Используйте с set_param_min(), set_param_max() и set_param_curve() для установки свойств скорости анимации.

Parameter PARAM_ANIM_OFFSET = 11

Используйте с set_param_min(), set_param_max() и set_param_curve() для установки свойств смещения анимации.

Parameter PARAM_MAX = 12

Представляет размер перечисления Parameter.


enum ParticleFlags: 🔗

ParticleFlags PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY = 0

Используйте с set_particle_flag() для установки partial_flag_align_y.

ParticleFlags PARTICLE_FLAG_ROTATE_Y = 1

Присутствует для согласованности с узлами 3D-частиц, не используется в 2D.

ParticleFlags PARTICLE_FLAG_DISABLE_Z = 2

Присутствует для согласованности с узлами 3D-частиц, не используется в 2D.

ParticleFlags PARTICLE_FLAG_MAX = 3

Представляет размер перечисления ParticleFlags.


enum EmissionShape: 🔗

EmissionShape EMISSION_SHAPE_POINT = 0

Все частицы будут испускаться из одной точки.

EmissionShape EMISSION_SHAPE_SPHERE = 1

Частицы будут испускаться в объеме сферы, сплющенной в двух измерениях.

EmissionShape EMISSION_SHAPE_SPHERE_SURFACE = 2

Частицы будут испускаться на поверхности сферы, сплющенной в двух измерениях.

EmissionShape EMISSION_SHAPE_RECTANGLE = 3

Частицы будут испускаться в области прямоугольника.

EmissionShape EMISSION_SHAPE_POINTS = 4

Частицы будут испускаться в точке, выбранной случайным образом среди emission_points. Цвет частиц будет модулироваться emission_colors.

EmissionShape EMISSION_SHAPE_DIRECTED_POINTS = 5

Частицы будут испускаться в позиции, выбранной случайным образом среди emission_points. Скорость и вращение частиц будут установлены на основе emission_normals. Цвет частиц будет модулироваться emission_colors.

EmissionShape EMISSION_SHAPE_RING = 6

Частицы будут испускаться в области кольца, параметризованной его внешним и внутренним радиусом.

EmissionShape EMISSION_SHAPE_MAX = 7

Представляет размер перечисления EmissionShape.


Описания свойств

int amount = 8 🔗

  • void set_amount(value: int)

  • int get_amount()

Количество частиц, выбрасываемых за один цикл выброса.


Curve angle_curve 🔗

Вращение каждой частицы будет анимировано вдоль этой Curve. Должна быть единица Curve.


float angle_max = 0.0 🔗

Максимальное начальное вращение, применяемое к каждой частице, в градусах.


float angle_min = 0.0 🔗

Минимальный эквивалент angle_max.


Curve angular_velocity_curve 🔗

Угловая скорость каждой частицы будет меняться вдоль этой Кривой. Должна быть единицей Кривой.


float angular_velocity_max = 0.0 🔗

Максимальная начальная угловая скорость (ск. вращения), приложенная к каждой частице в градусах в секунду.


float angular_velocity_min = 0.0 🔗

Минимальный эквивалент angular_velocity_max.


Curve anim_offset_curve 🔗

Смещение анимации каждой частицы будет меняться вдоль этой Curve. Должно быть единицей Curve.


float anim_offset_max = 0.0 🔗

Максимальное смещение анимации, соответствующее индексу кадра в текстуре. 0 — первый кадр, 1 — последний. См. CanvasItemMaterial.particles_animation.


float anim_offset_min = 0.0 🔗

Минимальный эквивалент anim_offset_max.


Curve anim_speed_curve 🔗

Скорость анимации каждой частицы будет меняться вдоль этой Кривой. Должна быть единицей Кривой.


float anim_speed_max = 0.0 🔗

Максимальная скорость анимации частиц. Скорость анимации 1 означает, что частицы будут делать полный цикл смещения от 0 до 1 в течение жизни, 2 означает 2 циклов и т. д.

При скорости анимации больше 1 не забудьте включить свойство CanvasItemMaterial.particles_anim_loop, если вы хотите, чтобы анимация повторялась.


float anim_speed_min = 0.0 🔗

Минимальный эквивалент anim_speed_max.


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

Начальный цвет каждой частицы. Если texture определена, она будет умножена на этот цвет.


Gradient color_initial_ramp 🔗

  • void set_color_initial_ramp(value: Gradient)

  • Gradient get_color_initial_ramp()

Первоначальный цвет каждой частицы будет меняться в соответствии с этим Gradient (умноженным на colors).


Gradient color_ramp 🔗

Цвет каждой частицы будет меняться в соответствии с этим Gradient в течение ее жизни (умноженным на colors).


Curve damping_curve 🔗

Затухание будет меняться вдоль этой Curve. Должно быть единицей Curve.


float damping_max = 0.0 🔗

Максимальная скорость, с которой частицы теряют скорость. Например, значение 100 означает, что частица перейдет от скорости 100 до 0 за 1 секунду.


float damping_min = 0.0 🔗

Минимальный эквивалент damping_max.


Vector2 direction = Vector2(1, 0) 🔗

Единичный вектор, задающий направление испускания частиц.


DrawOrder draw_order = 0 🔗

Порядок отрисовки частиц.


PackedColorArray emission_colors 🔗

Устанавливает Colors для модуляции частиц при использовании EMISSION_SHAPE_POINTS или EMISSION_SHAPE_DIRECTED_POINTS.

Note: The returned array is copied and any changes to it will not update the original property value. See PackedColorArray for more details.


PackedVector2Array emission_normals 🔗

Задает направление, в котором будут испускаться частицы при использовании EMISSION_SHAPE_DIRECTED_POINTS.

Note: The returned array is copied and any changes to it will not update the original property value. See PackedVector2Array for more details.


PackedVector2Array emission_points 🔗

Устанавливает начальные позиции для создания частиц при использовании EMISSION_SHAPE_POINTS или EMISSION_SHAPE_DIRECTED_POINTS.

Note: The returned array is copied and any changes to it will not update the original property value. See PackedVector2Array for more details.


Vector2 emission_rect_extents 🔗

  • void set_emission_rect_extents(value: Vector2)

  • Vector2 get_emission_rect_extents()

Границы прямоугольника, если emission_shape установлен в EMISSION_SHAPE_RECTANGLE.


float emission_ring_inner_radius 🔗

  • void set_emission_ring_inner_radius(value: float)

  • float get_emission_ring_inner_radius()

Внутренний радиус кольца, если параметр emission_shape установлен на EMISSION_SHAPE_RING.


float emission_ring_radius 🔗

  • void set_emission_ring_radius(value: float)

  • float get_emission_ring_radius()

Внешний радиус кольца, если параметр emission_shape установлен на EMISSION_SHAPE_RING.


EmissionShape emission_shape = 0 🔗

Внутри этой области будут испускаться частицы.


float emission_sphere_radius 🔗

  • void set_emission_sphere_radius(value: float)

  • float get_emission_sphere_radius()

Радиус сферы, если emission_shape установлен в EMISSION_SHAPE_SPHERE.


bool emitting = true 🔗

  • void set_emitting(value: bool)

  • bool is_emitting()

Если true, частицы испускаются. emitting можно использовать для запуска и остановки испускания частиц. Однако, если one_shot равно true, установка emitting в true не перезапустит цикл испускания, пока все активные частицы не закончат обработку. Вы можете использовать сигнал signalfinished, чтобы получать уведомления, как только все активные частицы закончат обработку.


float explosiveness = 0.0 🔗

  • void set_explosiveness_ratio(value: float)

  • float get_explosiveness_ratio()

Насколько быстро выбрасываются частицы в цикле эмиссии. Если больше 0, то будет разрыв в эмиссии до начала следующего цикла.


int fixed_fps = 0 🔗

  • void set_fixed_fps(value: int)

  • int get_fixed_fps()

Частота кадров системы частиц зафиксирована на значении. Например, изменение значения на 2 заставит частицы рендериться со скоростью 2 кадра в секунду. Обратите внимание, что это не замедляет симуляцию самой системы частиц.


bool fract_delta = true 🔗

  • void set_fractional_delta(value: bool)

  • bool get_fractional_delta()

Если true, то выполняется дробный расчет дельты, который обеспечивает более плавный эффект отображения частиц.


Vector2 gravity = Vector2(0, 980) 🔗

Гравитация действует на каждую частицу.


Curve hue_variation_curve 🔗

Оттенок каждой частицы будет меняться вдоль этой Curve. Должна быть единица Curve.


float hue_variation_max = 0.0 🔗

Максимальное начальное изменение оттенка, применяемое к каждой частице. Это изменит оттенок цвета частицы.


float hue_variation_min = 0.0 🔗

Минимальный эквивалент hue_variation_max.


float initial_velocity_max = 0.0 🔗

Максимальная начальная величина скорости для каждой частицы. Направление определяется из direction и spread.


float initial_velocity_min = 0.0 🔗

Минимальный эквивалент initial_velocity_max.


float lifetime = 1.0 🔗

  • void set_lifetime(value: float)

  • float get_lifetime()

Количество времени, в течение которого каждая частица будет существовать.


float lifetime_randomness = 0.0 🔗

  • void set_lifetime_randomness(value: float)

  • float get_lifetime_randomness()

Коэффициент случайности времени жизни частицы.


Curve linear_accel_curve 🔗

Линейное ускорение каждой частицы будет изменяться вдоль этой Curve. Должно быть единицей Curve.


float linear_accel_max = 0.0 🔗

Максимальное линейное ускорение, приложенное к каждой частице в направлении движения.


float linear_accel_min = 0.0 🔗

Минимальный эквивалент linear_accel_max.


bool local_coords = false 🔗

  • void set_use_local_coordinates(value: bool)

  • bool get_use_local_coordinates()

Если true, частицы используют координатное пространство родительского узла (известное как локальные координаты). Это заставит частицы двигаться и вращаться вдоль узла CPUParticles2D (и его родителей) при его перемещении или повороте. Если false, частицы используют глобальные координаты; они не будут двигаться или вращаться вдоль узла CPUParticles2D (и его родителей) при его перемещении или повороте.


bool one_shot = false 🔗

  • void set_one_shot(value: bool)

  • bool get_one_shot()

Если true, происходит только один цикл эмиссии. Если установить true во время цикла, эмиссия прекратится в конце цикла.


Curve orbit_velocity_curve 🔗

Орбитальная скорость каждой частицы будет меняться вдоль этой Curve. Должна быть единицей Curve.


float orbit_velocity_max = 0.0 🔗

Максимальная орбитальная скорость, применяемая к каждой частице. Заставляет частицы вращаться вокруг начала координат. Указывается в количестве полных оборотов вокруг начала координат в секунду.


float orbit_velocity_min = 0.0 🔗

Минимальный эквивалент orbit_velocity_max.


bool particle_flag_align_y = false 🔗

Совместите ось Y частицы с направлением ее скорости.


float preprocess = 0.0 🔗

  • void set_pre_process_time(value: float)

  • float get_pre_process_time()

Система частиц запускается так, как будто она уже проработала указанное количество секунд.


Curve radial_accel_curve 🔗

Радиальное ускорение каждой частицы будет изменяться вдоль этой Curve. Должно быть единицей Curve.


float radial_accel_max = 0.0 🔗

Максимальное радиальное ускорение, применяемое к каждой частице. Заставляет частицу ускоряться от начала координат или к нему, если отрицательно.


float radial_accel_min = 0.0 🔗

Минимальный эквивалент radial_accel_max.


float randomness = 0.0 🔗

  • void set_randomness_ratio(value: float)

  • float get_randomness_ratio()

Коэффициент случайности времени жизни излучения.


Curve scale_amount_curve 🔗

Масштаб каждой частицы будет меняться вдоль этой Curve. Должен быть единицей Curve.


float scale_amount_max = 1.0 🔗

Максимальный начальный масштаб, применяемый к каждой частице.


float scale_amount_min = 1.0 🔗

Минимальный эквивалент scale_amount_max.


Curve scale_curve_x 🔗

  • void set_scale_curve_x(value: Curve)

  • Curve get_scale_curve_x()

Горизонтальный масштаб каждой частицы будет меняться вдоль этой Curve. Должен быть единичным Curve.

split_scale должен быть включен.


Curve scale_curve_y 🔗

  • void set_scale_curve_y(value: Curve)

  • Curve get_scale_curve_y()

Вертикальный масштаб каждой частицы будет меняться вдоль этой Curve. Должен быть единичным Curve.

split_scale должен быть включен.


int seed = 0 🔗

  • void set_seed(value: int)

  • int get_seed()

Устанавливает случайное семя, используемое системой частиц. Действует только если use_fixed_seed равен true.


float speed_scale = 1.0 🔗

  • void set_speed_scale(value: float)

  • float get_speed_scale()

Коэффициент масштабирования скорости работы системы частиц. Значение 0 может использоваться для остановки частиц.


bool split_scale = false 🔗

  • void set_split_scale(value: bool)

  • bool get_split_scale()

Если true, кривая шкалы будет разделена на компоненты x и y. См. scale_curve_x и scale_curve_y.


float spread = 45.0 🔗

  • void set_spread(value: float)

  • float get_spread()

Начальное направление каждой частицы варьируется от +распространение до -распространение градусов.


Curve tangential_accel_curve 🔗

Тангенциальное ускорение каждой частицы будет меняться вдоль этой Curve. Должно быть единицей Curve.


float tangential_accel_max = 0.0 🔗

Максимальное тангенциальное ускорение, приложенное к каждой частице. Тангенциальное ускорение перпендикулярно скорости частицы, что придает частицам вихревое движение.


float tangential_accel_min = 0.0 🔗

Минимальный эквивалент tangential_accel_max.


Texture2D texture 🔗

Текстура частиц. Если null, частицы будут квадратными.


bool use_fixed_seed = false 🔗

  • void set_use_fixed_seed(value: bool)

  • bool get_use_fixed_seed()

Если true, частицы будут использовать одно и то же семя для каждой симуляции, используя семя, определенное в seed. Это полезно в ситуациях, когда визуальный результат должен быть согласованным между повторами, например, при использовании режима Movie Maker.


Описания метода

void convert_from_particles(particles: Node) 🔗

Устанавливает свойства этого узла для соответствия заданному узлу GPUParticles2D с назначенным ParticleProcessMaterial.


Curve get_param_curve(param: Parameter) const 🔗

Возвращает Curve параметра, указанного в Parameter.


float get_param_max(param: Parameter) const 🔗

Возвращает максимальный диапазон значений для заданного параметра.


float get_param_min(param: Parameter) const 🔗

Возвращает минимальный диапазон значений для заданного параметра.


bool get_particle_flag(particle_flag: ParticleFlags) const 🔗

Возвращает включенное состояние заданного флага частицы.


void request_particles_process(process_time: float) 🔗

Запрашивает обработку частиц для дополнительного времени процесса в течение одного кадра.

Полезно для воспроизведения частиц, если используется в сочетании с use_fixed_seed или путем вызова restart() с параметром keep_seed, установленным на true.


void restart(keep_seed: bool = false) 🔗

Перезапускает излучатель частиц.

Если keep_seed равен true, текущее случайное семя будет сохранено. Полезно для поиска и воспроизведения.


void set_param_curve(param: Parameter, curve: Curve) 🔗

Устанавливает Curve параметра, указанного в Parameter. Должен быть единицей Curve.


void set_param_max(param: Parameter, value: float) 🔗

Устанавливает максимальное значение для данного параметра.


void set_param_min(param: Parameter, value: float) 🔗

Устанавливает минимальное значение для данного параметра.


void set_particle_flag(particle_flag: ParticleFlags, enable: bool) 🔗

Включает или отключает указанный флаг частицы.