Up to date
This page is up to date for Godot 4.2
.
If you still find outdated information, please open an issue.
ParticleProcessMaterial¶
继承: Material < Resource < RefCounted < Object
保存用于 GPUParticles2D 或 GPUParticles3D 节点的粒子配置。
描述¶
ParticleProcessMaterial 定义了粒子的属性和行为。GPUParticles3D 和 GPUParticles2D 节点的 process_material
会使用这种材质。这种材质的有些属性是在粒子发射时应用的,有些则会应用 CurveTexture 或 GradientTexture1D 让数值或颜色值在粒子的生命周期中不断变化。
属性¶
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
方法¶
get_param_max ( Parameter param ) const |
|
get_param_min ( Parameter param ) const |
|
get_param_texture ( Parameter param ) const |
|
get_particle_flag ( ParticleFlags particle_flag ) const |
|
void |
set_param_max ( Parameter param, float value ) |
void |
set_param_min ( Parameter param, float value ) |
void |
set_param_texture ( Parameter param, Texture2D texture ) |
void |
set_particle_flag ( ParticleFlags particle_flag, bool enable ) |
枚举¶
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_MAX = 4
代表 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 枚举的大小。
属性说明¶
Texture2D alpha_curve
每个粒子颜色的 alpha 值将在其生命周期内乘以该 CurveTexture。
Texture2D angle_curve
每个粒子的旋转将沿着这个 CurveTexture 动画。
float angle_max = 0.0
应用于每个粒子的最大初始旋转,以度为单位。
仅在 particle_flag_disable_z 或 particle_flag_rotate_y 为 true
,或 BaseMaterial3D 使用 BaseMaterial3D.BILLBOARD_PARTICLES 绘制粒子时应用。
float angle_min = 0.0
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 的对应最小值。
Texture2D anim_offset_curve
每个粒子的动画偏移将沿着这个 CurveTexture 变化。
float anim_offset_max = 0.0
与纹理中的帧索引相对应的最大动画偏移量。0
是第一帧,1
是最后一帧。参见 CanvasItemMaterial.particles_animation。
float anim_offset_min = 0.0
anim_offset_max 的对应最小值。
Texture2D anim_speed_curve
每个粒子的动画速度将沿着这个 CurveTexture 变化。
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 的对应最小值。
bool attractor_interaction_enabled = true
如果为 true
,则启用与粒子吸引器的交互。在 3D 中,吸引力仅发生在 GPUParticles3D 节点的 GPUParticles3D.visibility_aabb 定义的区域内。
float collision_bounce
粒子的弹性。值范围从 0
(无弹跳)到 1
(完全弹跳)。仅当 collision_mode 为 COLLISION_RIGID 时有效。
float collision_friction
粒子的摩擦。值范围从 0
(无摩擦)到 1
(最大摩擦)。
CollisionMode collision_mode = 0
void set_collision_mode ( CollisionMode value )
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 将没有可见效果。
Texture2D color_ramp
每个粒子的颜色将在其生命周期内沿该 GradientTexture1D 变化(乘以 color)。