Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
ParticleProcessMaterial
继承: Material < Resource < RefCounted < Object
保存用于 GPUParticles2D 或 GPUParticles3D 节点的粒子配置。
描述
ParticleProcessMaterial 定义了粒子的属性和行为。GPUParticles3D 和 GPUParticles2D 节点的 process_material
会使用这种材质。这种材质的有些属性是在粒子发射时应用的,有些则会应用 CurveTexture 或 GradientTexture1D 让数值或颜色值在粒子的生命周期中不断变化。
属性
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
方法
get_param_max(param: Parameter) const |
|
get_param_min(param: Parameter) const |
|
get_param_texture(param: Parameter) const |
|
get_particle_flag(particle_flag: ParticleFlags) const |
|
void |
|
void |
set_param_max(param: Parameter, value: float) |
void |
set_param_min(param: Parameter, value: float) |
void |
set_param_texture(param: Parameter, texture: Texture2D) |
void |
set_particle_flag(particle_flag: ParticleFlags, enable: bool) |
信号
emission_shape_changed() 🔗
当材质的发射形状发生任何变化时发出,包括对 emission_shape、emission_shape_scale 和 emission_sphere_radius 的更改,以及任何其他影响发射形状的偏移、大小、缩放、朝向等属性的更改。
注意:出于性能考虑,该信号仅会在编辑器内发出。
枚举
enum Parameter: 🔗
Parameter PARAM_INITIAL_LINEAR_VELOCITY = 0
与 set_param_min()、set_param_max() 和 set_param_texture() 一起使用,设置初始速度属性。
Parameter PARAM_ANGULAR_VELOCITY = 1
与 set_param_min()、set_param_max() 和 set_param_texture() 一起使用,设置角速度属性。
Parameter PARAM_ORBIT_VELOCITY = 2
与 set_param_min()、set_param_max() 和 set_param_texture() 一起使用,设置轨道速度属性。
Parameter PARAM_LINEAR_ACCEL = 3
与 set_param_min()、set_param_max() 和 set_param_texture() 一起使用,设置线速度属性。
Parameter PARAM_RADIAL_ACCEL = 4
与 set_param_min()、set_param_max() 和 set_param_texture() 一起使用,设置径向加速度属性。
Parameter PARAM_TANGENTIAL_ACCEL = 5
与 set_param_min()、set_param_max() 和 set_param_texture() 一起使用,设置切向加速度属性。
Parameter PARAM_DAMPING = 6
与 set_param_min()、set_param_max() 和 set_param_texture() 一起使用,设置阻尼属性。
Parameter PARAM_ANGLE = 7
与 set_param_min()、set_param_max() 和 set_param_texture() 一起使用,设置角度属性。
Parameter PARAM_SCALE = 8
与 set_param_min()、set_param_max() 和 set_param_texture() 一起使用,设置缩放属性。
Parameter PARAM_HUE_VARIATION = 9
与 set_param_min()、set_param_max() 和 set_param_texture() 一起使用,设置色相变化属性。
Parameter PARAM_ANIM_SPEED = 10
与 set_param_min()、set_param_max() 和 set_param_texture() 一起使用,设置动画速度属性。
Parameter PARAM_ANIM_OFFSET = 11
与 set_param_min()、set_param_max() 和 set_param_texture() 一起使用,设置动画偏移属性。
Parameter PARAM_RADIAL_VELOCITY = 15
与 set_param_min()、set_param_max() 和 set_param_texture() 一起使用来设置径向速度属性。
Parameter PARAM_DIRECTIONAL_VELOCITY = 16
与 set_param_min()、set_param_max() 和 set_param_texture() 一起使用来设置定向速度属性。
Parameter PARAM_SCALE_OVER_VELOCITY = 17
与 set_param_min()、set_param_max() 和 set_param_texture() 一起使用来设置速度属性的缩放。
Parameter PARAM_MAX = 18
代表 Parameter 枚举的大小。
Parameter PARAM_TURB_VEL_INFLUENCE = 13
与 set_param_min() 和 set_param_max() 一起使用,以设置湍流对每个粒子速度的最小和最大影响。
Parameter PARAM_TURB_INIT_DISPLACEMENT = 14
与 set_param_min() 和 set_param_max() 一起使用,以设置粒子出生位置的湍流最小和最大位移。
Parameter PARAM_TURB_INFLUENCE_OVER_LIFE = 12
与 set_param_texture() 一起使用,以设置湍流对粒子寿命的影响。
enum ParticleFlags: 🔗
ParticleFlags PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY = 0
与 set_particle_flag() 一起使用,设置 particle_flag_align_y。
ParticleFlags PARTICLE_FLAG_ROTATE_Y = 1
与 set_particle_flag() 一起使用,设置 particle_flag_rotate_y。
ParticleFlags PARTICLE_FLAG_DISABLE_Z = 2
与 set_particle_flag() 一起使用,设置particle_flag_disable_z。
ParticleFlags PARTICLE_FLAG_DAMPING_AS_FRICTION = 3
该枚举目前没有描述,请帮我们贡献一个吧!
ParticleFlags PARTICLE_FLAG_MAX = 4
代表 ParticleFlags 枚举的大小。
enum EmissionShape: 🔗
EmissionShape EMISSION_SHAPE_POINT = 0
所有粒子将从单个点发射。
EmissionShape EMISSION_SHAPE_SPHERE = 1
粒子将在球体的体积中发射。
EmissionShape EMISSION_SHAPE_SPHERE_SURFACE = 2
粒子将在球体表面发射。
EmissionShape EMISSION_SHAPE_BOX = 3
粒子将在盒子的体积中发射。
EmissionShape EMISSION_SHAPE_POINTS = 4
粒子将在 emission_point_texture 上随机采样点所决定的位置发射。粒子颜色将由 emission_color_texture 调节。
EmissionShape EMISSION_SHAPE_DIRECTED_POINTS = 5
粒子将在 emission_point_texture 上随机采样点所决定的位置发射。粒子速度和旋转将基于 emission_normal_texture 进行设置。粒子颜色将由 emission_color_texture 调节。
EmissionShape EMISSION_SHAPE_RING = 6
粒子将以环形或圆柱的形式发射出来。
EmissionShape EMISSION_SHAPE_MAX = 7
代表 EmissionShape 枚举的大小。
enum SubEmitterMode: 🔗
SubEmitterMode SUB_EMITTER_DISABLED = 0
该枚举目前没有描述,请帮我们贡献一个吧!
SubEmitterMode SUB_EMITTER_CONSTANT = 1
该枚举目前没有描述,请帮我们贡献一个吧!
SubEmitterMode SUB_EMITTER_AT_END = 2
该枚举目前没有描述,请帮我们贡献一个吧!
SubEmitterMode SUB_EMITTER_AT_COLLISION = 3
该枚举目前没有描述,请帮我们贡献一个吧!
SubEmitterMode SUB_EMITTER_AT_START = 4
该枚举目前没有描述,请帮我们贡献一个吧!
SubEmitterMode SUB_EMITTER_MAX = 5
代表 SubEmitterMode 枚举的大小。
enum CollisionMode: 🔗
CollisionMode COLLISION_DISABLED = 0
粒子没有碰撞。粒子会穿过 GPUParticlesCollision3D 节点。
CollisionMode COLLISION_RIGID = 1
为使用 GPUParticlesCollision3D 节点的粒子设置 RigidBody3D 风格的碰撞。
CollisionMode COLLISION_HIDE_ON_CONTACT = 2
与 GPUParticlesCollision3D 节点碰撞时立即隐藏粒子。可以和使用 COLLISION_RIGID 碰撞模式的子发射器组合,在撞击时将父粒子“替换”为子发射器。
CollisionMode COLLISION_MAX = 3
代表 CollisionMode 枚举的大小。
属性说明
每个粒子的颜色的 Alpha 值将在其生命周期内与 CurveTexture 相乘。
注意:alpha_curve 乘以粒子网格的顶点颜色。要在 BaseMaterial3D 上产生可见效果,BaseMaterial3D.vertex_color_use_as_albedo 必须为 true
。对于 ShaderMaterial,必须在着色器的 fragment()
函数中插入 ALBEDO *= COLOR.rgb;
。否则 alpha_curve 将没有可见效果。
每个粒子的旋转将沿着这个 CurveTexture 动画。
应用于每个粒子的最大初始旋转,以度为单位。
仅在 particle_flag_disable_z 或 particle_flag_rotate_y 为 true
,或 BaseMaterial3D 使用 BaseMaterial3D.BILLBOARD_PARTICLES 绘制粒子时应用。
angle_max 的对应最小值。
Texture2D angular_velocity_curve 🔗
在每个粒子生命周期内,其角速度(旋转速度)将沿着此 CurveTexture 变化。
float angular_velocity_max = 0.0
🔗
应用于每个粒子的最大初始角速度(旋转速度),以度每秒为单位。
仅在 particle_flag_disable_z 或 particle_flag_rotate_y 为 true
,或 BaseMaterial3D 使用 BaseMaterial3D.BILLBOARD_PARTICLES 绘制粒子时应用。
float angular_velocity_min = 0.0
🔗
angular_velocity_max 的对应最小值。
每个粒子的动画偏移将沿着这个 CurveTexture 变化。
与纹理中的帧索引相对应的最大动画偏移量。0
是第一帧,1
是最后一帧。参见 CanvasItemMaterial.particles_animation。
anim_offset_max 的对应最小值。
每个粒子的动画速度将沿着这个 CurveTexture 变化。
最大粒子动画速度。1
的动画速度是指粒子在生命周期内会做完整的 0
到 1
的偏移循环,2
则表示 2
个循环,如此等等。
当动画速度大于 1
时,如果希望动画重复,请记住启用 CanvasItemMaterial.particles_anim_loop 属性。
anim_speed_max 的对应最小值。
bool attractor_interaction_enabled = true
🔗
如果为 true
,则启用与粒子吸引器的交互。在 3D 中,吸引力仅发生在 GPUParticles3D 节点的 GPUParticles3D.visibility_aabb 定义的区域内。
粒子的弹性。值范围从 0
(无弹跳)到 1
(完全弹跳)。仅当 collision_mode 为 COLLISION_RIGID 时有效。
粒子的摩擦。值范围从 0
(无摩擦)到 1
(最大摩擦)。
CollisionMode collision_mode = 0
🔗
void set_collision_mode(value: CollisionMode)
CollisionMode get_collision_mode()
粒子的碰撞模式。
注意:3D 粒子只能与 GPUParticlesCollision3D 节点碰撞,无法与 PhysicsBody3D 节点碰撞。要使粒子与不同的物体碰撞,可以将 GPUParticlesCollision3D 节点添加为 PhysicsBody3D 节点的子节点。在 3D 中,碰撞仅发生在 GPUParticles3D 节点的 GPUParticles3D.visibility_aabb 定义的区域内。
注意:2D 粒子只能与 LightOccluder2D 节点碰撞,无法与 PhysicsBody2D 节点碰撞。
bool collision_use_scale = false
🔗
如果为 true
,GPUParticles3D.collision_base_size 乘以粒子的有效缩放(请参阅 scale_min、scale_max、scale_curve 和 scale_over_velocity_curve)。
Color color = Color(1, 1, 1, 1)
🔗
每个粒子的初始颜色。如果定义了 GPUParticles2D 的 texture
,它将乘以该颜色。
注意:color 乘以粒子网格的顶点颜色。要在 BaseMaterial3D 上产生可见效果,BaseMaterial3D.vertex_color_use_as_albedo 必须为 true
。对于 ShaderMaterial,必须在着色器的 fragment()
函数中插入 ALBEDO *= COLOR.rgb;
。否则,color 将没有可见效果。
Texture2D color_initial_ramp 🔗
每个粒子的初始颜色将沿着该 GradientTexture1D(乘以 color)而变化。
注意:color_initial_ramp 乘以粒子网格的顶点颜色。要在 BaseMaterial3D 上产生可见效果,BaseMaterial3D.vertex_color_use_as_albedo 必须为 true
。对于 ShaderMaterial,必须在着色器的 fragment()
函数中插入 ALBEDO *= COLOR.rgb;
。否则,color_initial_ramp 将没有可见效果。
每个粒子的颜色将在其生命周期内沿该 GradientTexture1D 变化(乘以 color)。
注意:color_ramp 乘以粒子网格的顶点颜色。要在 BaseMaterial3D 上产生可见效果,BaseMaterial3D.vertex_color_use_as_albedo 必须为 true
。对于 ShaderMaterial,必须在着色器的 fragment()
函数中插入 ALBEDO *= COLOR.rgb;
。否则,color_ramp 将没有可见效果。
阻尼将沿着这个 CurveTexture 变化。
粒子失去速度的最大速率。例如 100
的值表示粒子将在 1
秒内,速度从 100
变为 0
。
damping_max 的对应最小值。
Vector3 direction = Vector3(1, 0, 0)
🔗
指定粒子发射方向的单位向量。
Texture2D directional_velocity_curve 🔗
一条曲线,指定粒子系统在其生命周期内沿每个轴的速度。
注意:动画速度不会受到阻尼的影响,请使用 velocity_limit_curve 代替。
float directional_velocity_max 🔗
最大方向速度值,乘以 directional_velocity_curve。
注意:动画速度不会受到阻尼的影响,请使用 velocity_limit_curve 代替。
float directional_velocity_min 🔗
最小方向速度值,乘以 directional_velocity_curve。
注意:动画速度不会受到阻尼的影响,请使用 velocity_limit_curve 代替。
Vector3 emission_box_extents 🔗
如果 emission_shape 设置为 EMISSION_SHAPE_BOX,则为框的范围。
注意:emission_box_extents 从中心点开始,并在两个方向上应用 X、Y 和 Z 值。大小是范围区域的两倍。
Texture2D emission_color_texture 🔗
粒子颜色将被调制,调制使用的颜色将通过对该纹理在与 emission_point_texture 相同的点处进行采样来确定。
注意:emission_color_texture 乘以粒子网格的顶点颜色。要在 BaseMaterial3D 上产生可见效果,BaseMaterial3D.vertex_color_use_as_albedo 必须为 true
。对于 ShaderMaterial,必须在着色器的 fragment()
函数中插入 ALBEDO *= COLOR.rgb;
。否则,emission_color_texture 将没有可见效果。
每个粒子的颜色将在其生命周期内与 CurveTexture 相乘。
注意:emission_curve 乘以粒子网格的顶点颜色。要在 BaseMaterial3D 上产生可见效果,BaseMaterial3D.vertex_color_use_as_albedo 必须为 true
。对于 ShaderMaterial,必须在着色器的 fragment()
函数中插入 ALBEDO *= COLOR.rgb;
。否则,emission_curve 将没有可见效果。
Texture2D emission_normal_texture 🔗
粒子的速度和旋转将通过在与emission_point_texture相同的点上对该纹理进行采样来设置。仅在EMISSION_SHAPE_DIRECTED_POINTS中使用。可以通过选择工具栏中 "粒子 "工具下的 "从网格/节点创建发射点",从网格或节点自动创建。
emission_shape 被设置为 EMISSION_SHAPE_POINTS 或 EMISSION_SHAPE_DIRECTED_POINTS 时,发射点的数量。
Texture2D emission_point_texture 🔗
粒子将被发射到由随机采样纹理所决定的位置。与EMISSION_SHAPE_POINTS和EMISSION_SHAPE_DIRECTED_POINTS一起使用。可以通过选择工具栏中的“粒子”工具下的“从网格/节点中创建发射点”自动创建网格或节点。
使用形为 EMISSION_SHAPE_RING 的发射器时环的轴。
float emission_ring_cone_angle 🔗
使用形为 EMISSION_SHAPE_RING 的发射器时圆锥体的张角。默认的 90 度角会得到一个环,而 0 度角则会得到椎体。两者之间的值会得到一端大于另一端的环。
注意:根据 emission_ring_height 的不同,圆环的末端形成尖顶时可能会对角度进行限制。
使用形为 EMISSION_SHAPE_RING 的发射器时环的高度。
float emission_ring_inner_radius 🔗
使用形为 EMISSION_SHAPE_RING 的发射器时环的内半径。
使用形为 EMISSION_SHAPE_RING 的发射器时环的半径。
EmissionShape emission_shape = 0
🔗
void set_emission_shape(value: EmissionShape)
EmissionShape get_emission_shape()
粒子将在这个区域内发射。使用EmissionShape常量作为值。
Vector3 emission_shape_offset = Vector3(0, 0, 0)
🔗
emission_shape 在局部空间中的偏移量。
Vector3 emission_shape_scale = Vector3(1, 1, 1)
🔗
局部空间中 emission_shape 的缩放。
float emission_sphere_radius 🔗
emission_shape 被设置为 EMISSION_SHAPE_SPHERE 时,该球体的半径。
沿 Y 轴的 spread 量。
Vector3 gravity = Vector3(0, -9.8, 0)
🔗
应用于每个粒子的重力。
Texture2D hue_variation_curve 🔗
每个粒子的色调将沿着这个 CurveTexture 变化。
float hue_variation_max = 0.0
🔗
应用于每个粒子的最大初始色相变化。会改变粒子颜色的色相。
float hue_variation_min = 0.0
🔗
hue_variation_max 的对应最小值。
float inherit_velocity_ratio = 0.0
🔗
每个粒子在生成时继承的相应 GPUParticles2D 或 GPUParticles3D 的速度百分比。
float initial_velocity_max = 0.0
🔗
每个粒子的最大初始速度大小。方向来自 direction 和 spread。
float initial_velocity_min = 0.0
🔗
initial_velocity_max 的对应最小值。
float lifetime_randomness = 0.0
🔗
粒子寿命随机比率。粒子寿命的公式为 lifetime * (1.0 - randf() * lifetime_randomness)
。例如 lifetime_randomness 为 0.4
时,寿命会被缩放为原本的 0.6
到 1.0
倍。
Texture2D linear_accel_curve 🔗
每个粒子的线性加速度将沿着这个 CurveTexture 变化。
float linear_accel_max = 0.0
🔗
在运动方向上应用于每个粒子的最大线性加速度。
float linear_accel_min = 0.0
🔗
linear_accel_max 的对应最小值。
Texture2D orbit_velocity_curve 🔗
每个粒子的轨道速度将沿着该 CurveTexture 变化。
注意:对于 3D 轨道速度,请使用 CurveXYZTexture。
注意:动画速度不会受到阻尼的影响,请使用 velocity_limit_curve 代替。
float orbit_velocity_max = 0.0
🔗
应用于每个粒子的最大轨道速度。使粒子围绕原点环绕。以每秒围绕原点的完整旋转次数指定。
注意:动画速度不会受到阻尼的影响,请使用 velocity_limit_curve 代替。
float orbit_velocity_min = 0.0
🔗
orbit_velocity_max 的最小等效值。
注意:动画速度不会受到阻尼的影响,请使用 velocity_limit_curve 代替。
bool particle_flag_align_y = false
🔗
void set_particle_flag(particle_flag: ParticleFlags, enable: bool)
bool get_particle_flag(particle_flag: ParticleFlags) const
将粒子的 Y 轴与其速度方向对齐。
bool particle_flag_damping_as_friction = false
🔗
void set_particle_flag(particle_flag: ParticleFlags, enable: bool)
bool get_particle_flag(particle_flag: ParticleFlags) const
将阻尼属性的行为从线性减速度更改为基于速度百分比的减速度。
bool particle_flag_disable_z = false
🔗
void set_particle_flag(particle_flag: ParticleFlags, enable: bool)
bool get_particle_flag(particle_flag: ParticleFlags) const
如果为 true
,则粒子将不会在 z 轴上移动。
bool particle_flag_rotate_y = false
🔗
void set_particle_flag(particle_flag: ParticleFlags, enable: bool)
bool get_particle_flag(particle_flag: ParticleFlags) const
如果为 true
,则粒子绕 Y 轴旋转 angle_min。
Texture2D radial_accel_curve 🔗
每个粒子的径向加速度将沿着这个 CurveTexture 变化。
float radial_accel_max = 0.0
🔗
应用于每个粒子的最大径向加速度。使粒子加速远离原点;或如果为负,则加速靠近原点。
float radial_accel_min = 0.0
🔗
radial_accel_max 的对应最小值。
Texture2D radial_velocity_curve 🔗
一个 CurveTexture,定义粒子生命周期中远离(或朝向)velocity_pivot 的速度。
注意:动画速度不会受到阻尼的影响,请使用 velocity_limit_curve 代替。
float radial_velocity_max = 0.0
🔗
应用于每个粒子的最大径向速度。使粒子远离 velocity_pivot,如果为负则朝它移动。
注意:动画速度不会受到阻尼的影响,请使用 velocity_limit_curve 代替。
float radial_velocity_min = 0.0
🔗
应用于每个粒子的最小径向速度。使粒子远离 velocity_pivot,如果为负则朝它移动。
注意:动画速度不会受到阻尼的影响,请使用 velocity_limit_curve 代替。
每个粒子的缩放将在其生命周期内沿着这个 CurveTexture 变化。如果改为提供一个 CurveXYZTexture,则缩放将按轴分离。
应用于每个粒子的最大初始缩放。
scale_max 对应的最小值。
Texture2D scale_over_velocity_curve 🔗
根据 CurveTexture 或 CurveXYZTexture 缩放每个粒子的速度。
float scale_over_velocity_max = 0.0
🔗
scale_over_velocity_curve 的最大速度参考值。
scale_over_velocity_curve 将在 scale_over_velocity_min 和 scale_over_velocity_max 之间插值。
float scale_over_velocity_min = 0.0
🔗
scale_over_velocity_curve 的最小速度参考值。
scale_over_velocity_curve 将在 scale_over_velocity_min 和 scale_over_velocity_max 之间插值。
每个粒子的初始方向范围,从 +spread
度到 -spread
度。
int sub_emitter_amount_at_collision 🔗
发生碰撞时从子发射器节点生成的粒子数量。当与主要粒子材质上的 COLLISION_HIDE_ON_CONTACT 结合使用时,可以用来实现雨滴撞击地面等效果。
注意:该值不应超过子发射器节点(不是主节点)上定义的 GPUParticles2D.amount 或 GPUParticles3D.amount,相对于子发射器的粒子寿命。如果超过粒子数量,则在足够的粒子过期之前,不会从子发射器中产生新的粒子。
int sub_emitter_amount_at_end 🔗
粒子过期时从子发射器节点生成的粒子数量。
注意:该值不应超过子发射器节点(不是主节点)上定义的 GPUParticles2D.amount 或 GPUParticles3D.amount,相对于子发射器的粒子寿命。如果超过粒子数量,则在足够的粒子过期之前,不会从子发射器中产生新的粒子。
int sub_emitter_amount_at_start 🔗
粒子出生时从子发射器节点生成的粒子数量。
注意:该值不应超过子发射器节点(不是主节点)上定义的 GPUParticles2D.amount 或 GPUParticles3D.amount,相对于子发射器的粒子寿命。如果超过粒子数量,则在足够的粒子过期之前,不会从子发射器中产生新的粒子。
从子发射器节点发射粒子的频率。每 sub_emitter_frequency 秒就会产生一个粒子。
注意:该值不应超过子发射器节点(不是主节点)上定义的 GPUParticles2D.amount 或 GPUParticles3D.amount,相对于子发射器的粒子寿命。如果超过粒子数量,则在足够的粒子过期之前,不会从子发射器中产生新的粒子。
bool sub_emitter_keep_velocity = false
🔗
如果为 true
,则子发射器在其生成时继承父粒子的速度。
SubEmitterMode sub_emitter_mode = 0
🔗
void set_sub_emitter_mode(value: SubEmitterMode)
SubEmitterMode get_sub_emitter_mode()
粒子子发射器模式(参见 GPUParticles2D.sub_emitter 和 GPUParticles3D.sub_emitter)。
Texture2D tangential_accel_curve 🔗
每个粒子的切向加速度将沿着这个 CurveTexture 变化。
float tangential_accel_max = 0.0
🔗
应用于每个粒子的最大切向加速度。切向加速度垂直于粒子的速度,从而使粒子产生涡旋运动。
float tangential_accel_min = 0.0
🔗
tangential_accel_max 的对应最小值。
bool turbulence_enabled = false
🔗
如果为 true
,则为粒子系统启用湍流。湍流可以(基于 3D 噪声图案)根据粒子的位置来改变粒子的移动。在 3D 中,可以用 GPUParticlesAttractorVectorField3D 和 NoiseTexture3D 作为世界空间湍流的平替,能够让不同粒子系统作出相同的反应。
注意:启用湍流对于 GPU 有较高的性能消耗。请最多只对少量粒子系统启用湍流,以移动/Web 平台作为目标时请考虑禁用湍流。
float turbulence_influence_max = 0.1
🔗
对每个粒子的最大湍流影响。
对每个粒子的实际湍流影响量,计算为介于 turbulence_influence_min 和 turbulence_influence_max 之间的一个随机值,并乘以来自 turbulence_influence_over_life 的湍流影响量。
float turbulence_influence_min = 0.1
🔗
对每个粒子的最小湍流影响。
对每个粒子的实际湍流影响量,计算为介于 turbulence_influence_min 和 turbulence_influence_max 之间的一个随机值,并乘以来自 turbulence_influence_over_life 的湍流影响量。
Texture2D turbulence_influence_over_life 🔗
每个粒子的湍流量,将在其生命周期内沿这条 CurveTexture 受到影响。
float turbulence_initial_displacement_max = 0.0
🔗
湍流对每个粒子出生位置的最大位移。
实际位移量将是基础湍流乘以一个介于 turbulence_initial_displacement_min 和 turbulence_initial_displacement_max 之间的随机值的系数。
float turbulence_initial_displacement_min = 0.0
🔗
湍流对每个粒子出生位置的最小位移。
实际位移量将是基础湍流乘以一个介于 turbulence_initial_displacement_min 和 turbulence_initial_displacement_max 之间的随机值的系数。
float turbulence_noise_scale = 9.0
🔗
该值控制湍流噪声图案的整体比例/频率。
小的比例会产生更小的特征具有更多细节,而高的比例会产生具有更大特征的更平滑的噪声。
Vector3 turbulence_noise_speed = Vector3(0, 0, 0)
🔗
湍流场的滚动速度。设置的是图案随时间移动的方向趋势。
默认值 Vector3(0, 0, 0)
会将滚动关闭。
float turbulence_noise_speed_random = 0.2
🔗
湍流场的原地变化率。会决定噪声图案随时间变化的快慢。
值为 0.0 时得到的是固定的图案。
float turbulence_noise_strength = 1.0
🔗
湍流噪声强度。增加此值将导致更强烈、对比度更高的噪声图案。
Texture2D velocity_limit_curve 🔗
定义粒子在其生命周期内的最大速度的 CurveTexture。
Vector3 velocity_pivot = Vector3(0, 0, 0)
🔗
用于计算粒子的径向速度和轨道速度的轴心点。
方法说明
Vector2 get_param(param: Parameter) const 🔗
以向量的形式返回给定 param
的最大最小值。
返回向量的 x
分量对应最小值,y
分量对应最大值。
float get_param_max(param: Parameter) const 🔗
返回给定参数的最大值范围。
float get_param_min(param: Parameter) const 🔗
返回给定参数的最小值范围。
Texture2D get_param_texture(param: Parameter) const 🔗
返回指定参数所使用的 Texture2D。
bool get_particle_flag(particle_flag: ParticleFlags) const 🔗
如果启用了指定的粒子标志,则返回 true
。可选项见 ParticleFlags。
void set_param(param: Parameter, value: Vector2) 🔗
以向量的形式设置给定 param
的最大最小值。
参数向量的 x
分量对应最小值,y
分量对应最大值。
void set_param_max(param: Parameter, value: float) 🔗
设置给定参数的最大值范围。
void set_param_min(param: Parameter, value: float) 🔗
设置给定参数的最小值范围。
void set_param_texture(param: Parameter, texture: Texture2D) 🔗
void set_particle_flag(particle_flag: ParticleFlags, enable: bool) 🔗
如果为 true
,则启用指定的粒子标志。选项见 ParticleFlags。