Particles
Inherits: GeometryInstance < VisualInstance < CullInstance < Spatial < Node < Object
基于GPU的3D粒子发射器。
描述
用于创建各种粒子系统和效果的 3D 粒子节点。Particles
实现了是发射器以给定的速率产生一定数量的粒子。
使用 process_material
属性添加 ParticlesMaterial 来配置粒子外观和行为。或者,您可以添加一个将应用于所有粒子的 ShaderMaterial。
注意:Particles
仅在使用 GLES3 渲染器时有效。如果使用 GLES2 渲染器,请改用CPUParticles。您可以通过选择节点,单击 3D 编辑器视窗顶部的粒子菜单,然后选择转换为 CPUParticles,将 Particles
转换为 CPUParticles。
注意:在处理粒子节点后,记得通过选择它来更新其visibility_aabb,单击 3D 编辑器视窗顶部的粒子菜单,然后选择生成可见 AABB。否则,粒子可能会由于相机位置和角度的改变突然消失。
教程
属性
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
|
方法
capture_aabb ( ) const | |
get_draw_pass_mesh ( int pass ) const | |
void | restart ( ) |
void | set_draw_pass_mesh ( int pass, Mesh mesh ) |
枚举
enum DrawOrder:
DRAW_ORDER_INDEX = 0 —- 粒子按发射顺序绘制。
DRAW_ORDER_LIFETIME = 1 —- 按照剩余寿命的顺序绘制粒子。
DRAW_ORDER_VIEW_DEPTH = 2 —- 粒子按深度顺序绘制。
常量
- MAX_DRAW_PASSES = 4 —- 支持的最大抽取次数。
属性说明
- int amount
Default |
|
Setter | set_amount(value) |
Getter | get_amount() |
在一个发射周期内排放的粒子数(对应于lifetime)。
注意:改变amount将重置粒子发射,因此,在改变amount之前已经排放的所有粒子将被移除。
- DrawOrder draw_order
Default |
|
Setter | set_draw_order(value) |
Getter | get_draw_order() |
粒子绘制顺序。使用DrawOrder值。
- Mesh draw_pass_1
Setter | set_draw_pass_mesh(value) |
Getter | get_draw_pass_mesh() |
第一次抽取的Mesh。
- Mesh draw_pass_2
Setter | set_draw_pass_mesh(value) |
Getter | get_draw_pass_mesh() |
Mesh在第二次抽取时被抽出的。
- Mesh draw_pass_3
Setter | set_draw_pass_mesh(value) |
Getter | get_draw_pass_mesh() |
Mesh这是为第三次抽取所抽出的。
- Mesh draw_pass_4
Setter | set_draw_pass_mesh(value) |
Getter | get_draw_pass_mesh() |
Mesh这是为第四次抽取所抽出的。
- int draw_passes
Default |
|
Setter | set_draw_passes(value) |
Getter | get_draw_passes() |
渲染粒子时的绘制次数。
- bool emitting
Default |
|
Setter | set_emitting(value) |
Getter | is_emitting() |
如果true
,则正在发射粒子。
- float explosiveness
Default |
|
Setter | set_explosiveness_ratio(value) |
Getter | get_explosiveness_ratio() |
每次发射之间的时间比。如果0
,粒子是连续发射的。如果1
,所有的粒子都同时发射。
- int fixed_fps
Default |
|
Setter | set_fixed_fps(value) |
Getter | get_fixed_fps() |
粒子系统的帧速率固定为一个值。例如,将值更改为2将使粒子以每秒2帧的速度渲染。注意,这不会减慢粒子系统本身的仿真速度。
- bool fract_delta
Default |
|
Setter | set_fractional_delta(value) |
Getter | get_fractional_delta() |
如果true
,将导致分数增量计算,该显示具有更平滑的粒子显示效果。
- float lifetime
Default |
|
Setter | set_lifetime(value) |
Getter | get_lifetime() |
每个粒子存在的时间,以秒为单位。
- bool local_coords
Default |
|
Setter | set_use_local_coordinates(value) |
Getter | get_use_local_coordinates() |
如果true
,则粒子将使用父节点的坐标空间。如果false
,则使用全局坐标。
- bool one_shot
Default |
|
Setter | set_one_shot(value) |
Getter | get_one_shot() |
如果true
,将只发出amount
粒子。
- float preprocess
Default |
|
Setter | set_pre_process_time(value) |
Getter | get_pre_process_time() |
动画开始前对粒子进行预处理的时间。让你在粒子开始发射后的一段时间内开始动画。
- Material process_material
Setter | set_process_material(value) |
Getter | get_process_material() |
用于处理粒子的 Material 。可以是一个 ParticlesMaterial 或一个 ShaderMaterial 。
- float randomness
Default |
|
Setter | set_randomness_ratio(value) |
Getter | get_randomness_ratio() |
发出随机率。
- float speed_scale
Default |
|
Setter | set_speed_scale(value) |
Getter | get_speed_scale() |
速度缩放比。一个0
的值可以用来暂停粒子。
- AABB visibility_aabb
Default |
|
Setter | set_visibility_aabb(value) |
Getter | get_visibility_aabb() |
AABB 确定节点的区域,该区域需要在屏幕上可见才能使粒子系统处于活动状态。
如果在节点进入/退出屏幕时粒子突然出现/消失,则增大框。 AABB 可以通过代码或使用 Particles → Generate AABB 编辑器工具生成。
注意: 如果使用中的 ParticlesMaterial 配置为投射阴影,您可能需要放大此 AABB 以确保在粒子离屏时更新阴影。
方法说明
- AABB capture_aabb ( ) const
返回包含当前帧中所有活动粒子的轴对齐包围盒。
返回在索引 pass
处绘制的 Mesh 。
- void restart ( )
重新发射粒子,清除现有的粒子。
设置在索引 pass
处绘制的 Mesh 。