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...
CPUParticles3D¶
继承: GeometryInstance3D < VisualInstance3D < Node3D < Node < Object
基于 CPU 的 3D 粒子发射器。
描述¶
基于 CPU 的 3D 粒子节点,可用于创建各种粒子系统、粒子效果。
另见 GPUParticles3D,利用硬件加速提供了相同的功能,但可能无法在较旧的设备上运行。
教程¶
属性¶
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
方法¶
void |
convert_from_particles ( Node particles ) |
get_param_curve ( Parameter param ) const |
|
get_param_max ( Parameter param ) const |
|
get_param_min ( Parameter param ) const |
|
get_particle_flag ( ParticleFlags particle_flag ) const |
|
void |
restart ( ) |
void |
set_param_curve ( Parameter param, Curve curve ) |
void |
set_param_max ( Parameter param, float value ) |
void |
set_param_min ( Parameter param, float value ) |
void |
set_particle_flag ( ParticleFlags particle_flag, bool enable ) |
信号¶
finished ( )
当所有活动粒子完成处理时发出。当 one_shot 被禁用时,粒子将连续处理,因此它永远不会触发。
枚举¶
enum DrawOrder:
DrawOrder DRAW_ORDER_INDEX = 0
粒子按发射顺序绘制。
DrawOrder DRAW_ORDER_LIFETIME = 1
粒子按照剩余寿命的顺序绘制。换句话说,寿命最长的粒子被绘制在前面。
DrawOrder DRAW_ORDER_VIEW_DEPTH = 2
粒子按深度顺序绘制。
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 一起使用,设置 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_MAX = 3
代表 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_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
单个发射周期内发射的粒子数。
Curve angle_curve
每个粒子的旋转将沿着这条 Curve 进行动画处理。
float angle_max = 0.0
最大角度。
float angle_min = 0.0
最小角度。
Curve angular_velocity_curve
每个粒子的角速度(旋转速度)将在其生命周期内沿着这条 Curve 变化。
float angular_velocity_max = 0.0
应用于每个粒子的最大初始角速度(旋转速度),单位:度每秒。
float angular_velocity_min = 0.0
应用于每个粒子的最小初始角速度(旋转速度),单位:度每秒 。
Curve anim_offset_curve
每个粒子的动画偏移将沿着这条 Curve 变化。
float anim_offset_max = 0.0
最大动画偏移。
float anim_offset_min = 0.0
最小动画偏移。
Curve anim_speed_curve
每个粒子的动画速度将沿着这条 Curve 变化。
float anim_speed_max = 0.0
最大粒子动画速度。
float anim_speed_min = 0.0
最小粒子动画速度。
Color color = Color(1, 1, 1, 1)
每个粒子的初始颜色。
注意:color 乘以粒子网格的顶点颜色。要在 BaseMaterial3D 上产生可见效果,BaseMaterial3D.vertex_color_use_as_albedo 必须为 true
。对于 ShaderMaterial,必须在着色器的 fragment()
函数中插入 ALBEDO *= COLOR.rgb;
。否则,color 将没有可见效果。
Gradient color_initial_ramp
每个粒子的初始颜色将沿着该 GradientTexture1D(乘以 color)而变化。
注意:color_initial_ramp 乘以粒子网格的顶点颜色。要在 BaseMaterial3D 上产生可见效果,BaseMaterial3D.vertex_color_use_as_albedo 必须为 true
。对于 ShaderMaterial,必须在着色器的 fragment()
函数中插入 ALBEDO *= COLOR.rgb;
。否则,color_initial_ramp 将没有可见效果。
Gradient color_ramp
每个粒子的颜色将在其生命周期内沿该 GradientTexture1D 变化(乘以 color)。
注意:color_ramp 乘以粒子网格的顶点颜色。要在 BaseMaterial3D 上产生可见效果,BaseMaterial3D.vertex_color_use_as_albedo 必须为 true
。对于 ShaderMaterial,必须在着色器的 fragment()
函数中插入 ALBEDO *= COLOR.rgb;
。否则,color_ramp 将没有可见效果。
Curve damping_curve
阻尼将沿着这条 Gradient 变化。
float damping_max = 0.0
最大阻尼。
float damping_min = 0.0
最小阻尼。
Vector3 direction = Vector3(1, 0, 0)
指定粒子发射方向的单位向量。
DrawOrder draw_order = 0
粒子绘制顺序。使用 DrawOrder 的值。
Vector3 emission_box_extents
emission_shape 被设置为 EMISSION_SHAPE_BOX 时,该矩形的范围。
PackedColorArray emission_colors = PackedColorArray()
void set_emission_colors ( PackedColorArray value )
PackedColorArray get_emission_colors ( )
设置使用 EMISSION_SHAPE_POINTS 或 EMISSION_SHAPE_DIRECTED_POINTS 时对粒子进行调制的 Color。
注意:emission_colors 会与粒子网格的顶点颜色相乘。要在 BaseMaterial3D 上产生可见效果,BaseMaterial3D.vertex_color_use_as_albedo 必须为 true
。对于 ShaderMaterial,必须在着色器的 fragment()
函数中插入 ALBEDO *= COLOR.rgb;
。否则 emission_colors 不会产生可见效果。
PackedVector3Array emission_normals
void set_emission_normals ( PackedVector3Array value )
PackedVector3Array get_emission_normals ( )
设置使用 EMISSION_SHAPE_DIRECTED_POINTS 时粒子发射的方向。
PackedVector3Array emission_points
void set_emission_points ( PackedVector3Array value )
PackedVector3Array get_emission_points ( )
设置使用 EMISSION_SHAPE_POINTS 或 EMISSION_SHAPE_DIRECTED_POINTS 时出生粒子的初始位置。
Vector3 emission_ring_axis
使用形为 EMISSION_SHAPE_RING 的发射器时环的轴。
float emission_ring_height
使用形为 EMISSION_SHAPE_RING 的发射器时环的高度。
float emission_ring_inner_radius
使用形为 EMISSION_SHAPE_RING 的发射器时环的内半径。
float emission_ring_radius
使用形为 EMISSION_SHAPE_RING 的发射器时环的半径。
EmissionShape emission_shape = 0
void set_emission_shape ( EmissionShape value )
EmissionShape get_emission_shape ( )
粒子将在此区域内发射。可能的取值见 EmissionShape。
float emission_sphere_radius
EmissionShape 被设置为 EMISSION_SHAPE_SPHERE时,该球体的半径。
bool emitting = true
如果为 true
,则正在发射粒子。emitting 可用于启动和停止粒子发射。但是,如果 one_shot 为 true
,则将 emitting 设置为 true
将不会重新启动该发射循环,直到所有活动粒子完成处理为止。一旦所有活动粒子完成处理,你可以使用 finished 信号来收取通知。
float explosiveness = 0.0
粒子在单个发射周期中的发射有多急。如果大于 0
,则在下一个发射周期开始之前,发射会出现一个间隔。
int fixed_fps = 0
粒子系统的帧速率被固定为一个值。例如,将值更改为 2 会使粒子以每秒 2 帧的速度渲染。请注意,这并不会降低粒子系统本身的速度。
float flatness = 0.0
Y/Z 平面中的 spread 数量。值 1
将粒子限制在 X/Z 平面上。
bool fract_delta = true
如果为 为true
,则使用分数增量 delta 计算,将具有更平滑的粒子显示效果。
Vector3 gravity = Vector3(0, -9.8, 0)
应用于每个粒子的重力。
Curve hue_variation_curve
每个粒子的色相都会沿着这条 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