Files
godot-docs-l10n/classes/zh_CN/class_gpuparticles3d.rst

889 lines
39 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

:github_url: hide
.. DO NOT EDIT THIS FILE!!!
.. Generated automatically from Godot engine sources.
.. Generator: https://github.com/godotengine/godot/tree/4.2/doc/tools/make_rst.py.
.. XML source: https://github.com/godotengine/godot/tree/4.2/doc/classes/GPUParticles3D.xml.
.. _class_GPUParticles3D:
GPUParticles3D
==============
**继承:** :ref:`GeometryInstance3D<class_GeometryInstance3D>` **<** :ref:`VisualInstance3D<class_VisualInstance3D>` **<** :ref:`Node3D<class_Node3D>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
3D 粒子发射器。
.. rst-class:: classref-introduction-group
描述
----
3D 粒子节点,用于创建各种粒子系统和效果。\ **GPUParticles3D** 的特点是,发射器以给定的速度产生一定数量的粒子。
使用 :ref:`process_material<class_GPUParticles3D_property_process_material>` 属性来添加一个配置粒子外观和行为的 :ref:`ParticleProcessMaterial<class_ParticleProcessMaterial>`\ 。或者,你可以添加一个应用于所有粒子的 :ref:`ShaderMaterial<class_ShaderMaterial>`\ 。
.. rst-class:: classref-introduction-group
教程
----
- :doc:`粒子系统3D <../tutorials/3d/particles/index>`
- :doc:`用粒子控制数千条鱼 <../tutorials/performance/vertex_animation/controlling_thousands_of_fish>`
- `第三人称射击演示 <https://godotengine.org/asset-library/asset/678>`__
.. rst-class:: classref-reftable-group
属性
----
.. table::
:widths: auto
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`int<class_int>` | :ref:`amount<class_GPUParticles3D_property_amount>` | ``8`` |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`float<class_float>` | :ref:`amount_ratio<class_GPUParticles3D_property_amount_ratio>` | ``1.0`` |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`float<class_float>` | :ref:`collision_base_size<class_GPUParticles3D_property_collision_base_size>` | ``0.01`` |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`DrawOrder<enum_GPUParticles3D_DrawOrder>` | :ref:`draw_order<class_GPUParticles3D_property_draw_order>` | ``0`` |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`Mesh<class_Mesh>` | :ref:`draw_pass_1<class_GPUParticles3D_property_draw_pass_1>` | |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`Mesh<class_Mesh>` | :ref:`draw_pass_2<class_GPUParticles3D_property_draw_pass_2>` | |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`Mesh<class_Mesh>` | :ref:`draw_pass_3<class_GPUParticles3D_property_draw_pass_3>` | |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`Mesh<class_Mesh>` | :ref:`draw_pass_4<class_GPUParticles3D_property_draw_pass_4>` | |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`int<class_int>` | :ref:`draw_passes<class_GPUParticles3D_property_draw_passes>` | ``1`` |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`Skin<class_Skin>` | :ref:`draw_skin<class_GPUParticles3D_property_draw_skin>` | |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`bool<class_bool>` | :ref:`emitting<class_GPUParticles3D_property_emitting>` | ``true`` |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`float<class_float>` | :ref:`explosiveness<class_GPUParticles3D_property_explosiveness>` | ``0.0`` |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`int<class_int>` | :ref:`fixed_fps<class_GPUParticles3D_property_fixed_fps>` | ``30`` |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`bool<class_bool>` | :ref:`fract_delta<class_GPUParticles3D_property_fract_delta>` | ``true`` |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`float<class_float>` | :ref:`interp_to_end<class_GPUParticles3D_property_interp_to_end>` | ``0.0`` |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`bool<class_bool>` | :ref:`interpolate<class_GPUParticles3D_property_interpolate>` | ``true`` |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`float<class_float>` | :ref:`lifetime<class_GPUParticles3D_property_lifetime>` | ``1.0`` |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`bool<class_bool>` | :ref:`local_coords<class_GPUParticles3D_property_local_coords>` | ``false`` |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`bool<class_bool>` | :ref:`one_shot<class_GPUParticles3D_property_one_shot>` | ``false`` |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`float<class_float>` | :ref:`preprocess<class_GPUParticles3D_property_preprocess>` | ``0.0`` |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`Material<class_Material>` | :ref:`process_material<class_GPUParticles3D_property_process_material>` | |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`float<class_float>` | :ref:`randomness<class_GPUParticles3D_property_randomness>` | ``0.0`` |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`float<class_float>` | :ref:`speed_scale<class_GPUParticles3D_property_speed_scale>` | ``1.0`` |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`NodePath<class_NodePath>` | :ref:`sub_emitter<class_GPUParticles3D_property_sub_emitter>` | ``NodePath("")`` |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`bool<class_bool>` | :ref:`trail_enabled<class_GPUParticles3D_property_trail_enabled>` | ``false`` |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`float<class_float>` | :ref:`trail_lifetime<class_GPUParticles3D_property_trail_lifetime>` | ``0.3`` |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`TransformAlign<enum_GPUParticles3D_TransformAlign>` | :ref:`transform_align<class_GPUParticles3D_property_transform_align>` | ``0`` |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
| :ref:`AABB<class_AABB>` | :ref:`visibility_aabb<class_GPUParticles3D_property_visibility_aabb>` | ``AABB(-4, -4, -4, 8, 8, 8)`` |
+-----------------------------------------------------------+-------------------------------------------------------------------------------+-------------------------------+
.. rst-class:: classref-reftable-group
方法
----
.. table::
:widths: auto
+-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`AABB<class_AABB>` | :ref:`capture_aabb<class_GPUParticles3D_method_capture_aabb>` **(** **)** |const| |
+-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`convert_from_particles<class_GPUParticles3D_method_convert_from_particles>` **(** :ref:`Node<class_Node>` particles **)** |
+-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`emit_particle<class_GPUParticles3D_method_emit_particle>` **(** :ref:`Transform3D<class_Transform3D>` xform, :ref:`Vector3<class_Vector3>` velocity, :ref:`Color<class_Color>` color, :ref:`Color<class_Color>` custom, :ref:`int<class_int>` flags **)** |
+-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Mesh<class_Mesh>` | :ref:`get_draw_pass_mesh<class_GPUParticles3D_method_get_draw_pass_mesh>` **(** :ref:`int<class_int>` pass **)** |const| |
+-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`restart<class_GPUParticles3D_method_restart>` **(** **)** |
+-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| void | :ref:`set_draw_pass_mesh<class_GPUParticles3D_method_set_draw_pass_mesh>` **(** :ref:`int<class_int>` pass, :ref:`Mesh<class_Mesh>` mesh **)** |
+-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
信号
----
.. _class_GPUParticles3D_signal_finished:
.. rst-class:: classref-signal
**finished** **(** **)**
当所有活动粒子完成处理时发出。当 :ref:`one_shot<class_GPUParticles3D_property_one_shot>` 被禁用时,粒子将连续处理,因此它永远不会发出。
\ **注意:**\ 由于粒子是在 GPU 上计算的,因此在该信号发出之前可能会有延迟。
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
枚举
----
.. _enum_GPUParticles3D_DrawOrder:
.. rst-class:: classref-enumeration
enum **DrawOrder**:
.. _class_GPUParticles3D_constant_DRAW_ORDER_INDEX:
.. rst-class:: classref-enumeration-constant
:ref:`DrawOrder<enum_GPUParticles3D_DrawOrder>` **DRAW_ORDER_INDEX** = ``0``
粒子按发射顺序绘制。
.. _class_GPUParticles3D_constant_DRAW_ORDER_LIFETIME:
.. rst-class:: classref-enumeration-constant
:ref:`DrawOrder<enum_GPUParticles3D_DrawOrder>` **DRAW_ORDER_LIFETIME** = ``1``
粒子按照剩余寿命的顺序绘制。换句话说,寿命最长的粒子被绘制在前面。
.. _class_GPUParticles3D_constant_DRAW_ORDER_REVERSE_LIFETIME:
.. rst-class:: classref-enumeration-constant
:ref:`DrawOrder<enum_GPUParticles3D_DrawOrder>` **DRAW_ORDER_REVERSE_LIFETIME** = ``2``
粒子按照剩余寿命的相反顺序绘制。换句话说,寿命最短的粒子被绘制在前面。
.. _class_GPUParticles3D_constant_DRAW_ORDER_VIEW_DEPTH:
.. rst-class:: classref-enumeration-constant
:ref:`DrawOrder<enum_GPUParticles3D_DrawOrder>` **DRAW_ORDER_VIEW_DEPTH** = ``3``
粒子按深度顺序绘制。
.. rst-class:: classref-item-separator
----
.. _enum_GPUParticles3D_EmitFlags:
.. rst-class:: classref-enumeration
enum **EmitFlags**:
.. _class_GPUParticles3D_constant_EMIT_FLAG_POSITION:
.. rst-class:: classref-enumeration-constant
:ref:`EmitFlags<enum_GPUParticles3D_EmitFlags>` **EMIT_FLAG_POSITION** = ``1``
粒子在指定位置开始。
.. _class_GPUParticles3D_constant_EMIT_FLAG_ROTATION_SCALE:
.. rst-class:: classref-enumeration-constant
:ref:`EmitFlags<enum_GPUParticles3D_EmitFlags>` **EMIT_FLAG_ROTATION_SCALE** = ``2``
粒子以指定的旋转和缩放开始。
.. _class_GPUParticles3D_constant_EMIT_FLAG_VELOCITY:
.. rst-class:: classref-enumeration-constant
:ref:`EmitFlags<enum_GPUParticles3D_EmitFlags>` **EMIT_FLAG_VELOCITY** = ``4``
粒子从指定的速度向量开始,该向量定义了发射方向和速度。
.. _class_GPUParticles3D_constant_EMIT_FLAG_COLOR:
.. rst-class:: classref-enumeration-constant
:ref:`EmitFlags<enum_GPUParticles3D_EmitFlags>` **EMIT_FLAG_COLOR** = ``8``
粒子以指定的颜色开始。
.. _class_GPUParticles3D_constant_EMIT_FLAG_CUSTOM:
.. rst-class:: classref-enumeration-constant
:ref:`EmitFlags<enum_GPUParticles3D_EmitFlags>` **EMIT_FLAG_CUSTOM** = ``16``
粒子以指定的 ``CUSTOM`` 数据开始。
.. rst-class:: classref-item-separator
----
.. _enum_GPUParticles3D_TransformAlign:
.. rst-class:: classref-enumeration
enum **TransformAlign**:
.. _class_GPUParticles3D_constant_TRANSFORM_ALIGN_DISABLED:
.. rst-class:: classref-enumeration-constant
:ref:`TransformAlign<enum_GPUParticles3D_TransformAlign>` **TRANSFORM_ALIGN_DISABLED** = ``0``
.. _class_GPUParticles3D_constant_TRANSFORM_ALIGN_Z_BILLBOARD:
.. rst-class:: classref-enumeration-constant
:ref:`TransformAlign<enum_GPUParticles3D_TransformAlign>` **TRANSFORM_ALIGN_Z_BILLBOARD** = ``1``
.. _class_GPUParticles3D_constant_TRANSFORM_ALIGN_Y_TO_VELOCITY:
.. rst-class:: classref-enumeration-constant
:ref:`TransformAlign<enum_GPUParticles3D_TransformAlign>` **TRANSFORM_ALIGN_Y_TO_VELOCITY** = ``2``
.. _class_GPUParticles3D_constant_TRANSFORM_ALIGN_Z_BILLBOARD_Y_TO_VELOCITY:
.. rst-class:: classref-enumeration-constant
:ref:`TransformAlign<enum_GPUParticles3D_TransformAlign>` **TRANSFORM_ALIGN_Z_BILLBOARD_Y_TO_VELOCITY** = ``3``
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
常量
----
.. _class_GPUParticles3D_constant_MAX_DRAW_PASSES:
.. rst-class:: classref-constant
**MAX_DRAW_PASSES** = ``4``
支持的最大绘制阶段数。
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
属性说明
--------
.. _class_GPUParticles3D_property_amount:
.. rst-class:: classref-property
:ref:`int<class_int>` **amount** = ``8``
.. rst-class:: classref-property-setget
- void **set_amount** **(** :ref:`int<class_int>` value **)**
- :ref:`int<class_int>` **get_amount** **(** **)**
一个发射周期内发射的粒子数。有效发射速率为每秒 ``(amount * amount_ratio) / lifetime`` 个粒子。较高的值会增加 GPU 要求,即使在给定时间并非所有粒子都可见或 :ref:`amount_ratio<class_GPUParticles3D_property_amount_ratio>` 减少。
\ **注意:**\ 更改该值将导致粒子系统重新启动。为了避免这种情况,请更改 :ref:`amount_ratio<class_GPUParticles3D_property_amount_ratio>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_amount_ratio:
.. rst-class:: classref-property
:ref:`float<class_float>` **amount_ratio** = ``1.0``
.. rst-class:: classref-property-setget
- void **set_amount_ratio** **(** :ref:`float<class_float>` value **)**
- :ref:`float<class_float>` **get_amount_ratio** **(** **)**
实际应该发射的粒子的比率。如果被设置为低于 ``1.0`` 的值,则会将整个生命周期内发射的粒子数量设置为 ``amount * amount_ratio``\ 。与更改 :ref:`amount<class_GPUParticles3D_property_amount>` 不同,发射时更改 :ref:`amount_ratio<class_GPUParticles3D_property_amount_ratio>` 不会影响已发射的粒子,也不会导致粒子系统重新启动。\ :ref:`amount_ratio<class_GPUParticles3D_property_amount_ratio>` 可用于创建使发射粒子的数量随时间变化的效果。
\ **注意:**\ 减少 :ref:`amount_ratio<class_GPUParticles3D_property_amount_ratio>` 不会带来性能优势,因为无论 :ref:`amount_ratio<class_GPUParticles3D_property_amount_ratio>` 是多少,都需要为粒子总数 :ref:`amount<class_GPUParticles3D_property_amount>` 分配和处理资源。如果你不打算在粒子发射时更改发射的粒子数量,请确保将 :ref:`amount_ratio<class_GPUParticles3D_property_amount_ratio>` 设置为 ``1`` 并根据你的喜好更改 :ref:`amount<class_GPUParticles3D_property_amount>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_collision_base_size:
.. rst-class:: classref-property
:ref:`float<class_float>` **collision_base_size** = ``0.01``
.. rst-class:: classref-property-setget
- void **set_collision_base_size** **(** :ref:`float<class_float>` value **)**
- :ref:`float<class_float>` **get_collision_base_size** **(** **)**
粒子碰撞的基本直径(以米为单位)。如果碰撞时粒子似乎沉入地下,请增加该值。如果粒子在碰撞时出现漂浮,请减小该值。仅当 :ref:`ParticleProcessMaterial.collision_mode<class_ParticleProcessMaterial_property_collision_mode>`:ref:`ParticleProcessMaterial.COLLISION_RIGID<class_ParticleProcessMaterial_constant_COLLISION_RIGID>`:ref:`ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT<class_ParticleProcessMaterial_constant_COLLISION_HIDE_ON_CONTACT>` 时有效。
\ **注意:**\ 粒子始终具有球形碰撞形状。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_draw_order:
.. rst-class:: classref-property
:ref:`DrawOrder<enum_GPUParticles3D_DrawOrder>` **draw_order** = ``0``
.. rst-class:: classref-property-setget
- void **set_draw_order** **(** :ref:`DrawOrder<enum_GPUParticles3D_DrawOrder>` value **)**
- :ref:`DrawOrder<enum_GPUParticles3D_DrawOrder>` **get_draw_order** **(** **)**
粒子绘制顺序。使用 :ref:`DrawOrder<enum_GPUParticles3D_DrawOrder>` 值。
\ **注意:**\ :ref:`DRAW_ORDER_INDEX<class_GPUParticles3D_constant_DRAW_ORDER_INDEX>` 是支持 TAA 等效果的运动向量的唯一选项。如果粒子不透明,建议使用该绘制顺序来修复重影伪影。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_draw_pass_1:
.. rst-class:: classref-property
:ref:`Mesh<class_Mesh>` **draw_pass_1**
.. rst-class:: classref-property-setget
- void **set_draw_pass_mesh** **(** :ref:`int<class_int>` pass, :ref:`Mesh<class_Mesh>` mesh **)**
- :ref:`Mesh<class_Mesh>` **get_draw_pass_mesh** **(** :ref:`int<class_int>` pass **)** |const|
第一绘制阶段所绘制的 :ref:`Mesh<class_Mesh>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_draw_pass_2:
.. rst-class:: classref-property
:ref:`Mesh<class_Mesh>` **draw_pass_2**
.. rst-class:: classref-property-setget
- void **set_draw_pass_mesh** **(** :ref:`int<class_int>` pass, :ref:`Mesh<class_Mesh>` mesh **)**
- :ref:`Mesh<class_Mesh>` **get_draw_pass_mesh** **(** :ref:`int<class_int>` pass **)** |const|
第二绘制阶段所绘制的 :ref:`Mesh<class_Mesh>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_draw_pass_3:
.. rst-class:: classref-property
:ref:`Mesh<class_Mesh>` **draw_pass_3**
.. rst-class:: classref-property-setget
- void **set_draw_pass_mesh** **(** :ref:`int<class_int>` pass, :ref:`Mesh<class_Mesh>` mesh **)**
- :ref:`Mesh<class_Mesh>` **get_draw_pass_mesh** **(** :ref:`int<class_int>` pass **)** |const|
第三绘制阶段所绘制的 :ref:`Mesh<class_Mesh>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_draw_pass_4:
.. rst-class:: classref-property
:ref:`Mesh<class_Mesh>` **draw_pass_4**
.. rst-class:: classref-property-setget
- void **set_draw_pass_mesh** **(** :ref:`int<class_int>` pass, :ref:`Mesh<class_Mesh>` mesh **)**
- :ref:`Mesh<class_Mesh>` **get_draw_pass_mesh** **(** :ref:`int<class_int>` pass **)** |const|
第四绘制阶段所绘制的 :ref:`Mesh<class_Mesh>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_draw_passes:
.. rst-class:: classref-property
:ref:`int<class_int>` **draw_passes** = ``1``
.. rst-class:: classref-property-setget
- void **set_draw_passes** **(** :ref:`int<class_int>` value **)**
- :ref:`int<class_int>` **get_draw_passes** **(** **)**
渲染粒子时的绘制阶段数。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_draw_skin:
.. rst-class:: classref-property
:ref:`Skin<class_Skin>` **draw_skin**
.. rst-class:: classref-property-setget
- void **set_skin** **(** :ref:`Skin<class_Skin>` value **)**
- :ref:`Skin<class_Skin>` **get_skin** **(** **)**
.. container:: contribute
目前没有这个属性的描述。请帮我们\ :ref:`贡献一个 <doc_updating_the_class_reference>`\
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_emitting:
.. rst-class:: classref-property
:ref:`bool<class_bool>` **emitting** = ``true``
.. rst-class:: classref-property-setget
- void **set_emitting** **(** :ref:`bool<class_bool>` value **)**
- :ref:`bool<class_bool>` **is_emitting** **(** **)**
如果为 ``true``\ ,则正在发射粒子。\ :ref:`emitting<class_GPUParticles3D_property_emitting>` 可用于启动和停止粒子发射。但是,如果 :ref:`one_shot<class_GPUParticles3D_property_one_shot>```true``\ ,则将 :ref:`emitting<class_GPUParticles3D_property_emitting>` 设置为 ``true`` 将不会重新启动该发射循环,直到所有活动粒子完成处理为止。一旦所有活动粒子完成处理,你可以使用 :ref:`finished<class_GPUParticles3D_signal_finished>` 信号来收取通知。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_explosiveness:
.. rst-class:: classref-property
:ref:`float<class_float>` **explosiveness** = ``0.0``
.. rst-class:: classref-property-setget
- void **set_explosiveness_ratio** **(** :ref:`float<class_float>` value **)**
- :ref:`float<class_float>` **get_explosiveness_ratio** **(** **)**
每次发射之间的时间比。如果为 ``0``\ ,则粒子是连续发射的。如果为 ``1``\ ,则所有的粒子都同时发射。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_fixed_fps:
.. rst-class:: classref-property
:ref:`int<class_int>` **fixed_fps** = ``30``
.. rst-class:: classref-property-setget
- void **set_fixed_fps** **(** :ref:`int<class_int>` value **)**
- :ref:`int<class_int>` **get_fixed_fps** **(** **)**
粒子系统的帧速率被固定为一个值。例如,将值更改为 2 会使粒子以每秒 2 帧的速度渲染。请注意,这并不会降低粒子系统本身的模拟速度。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_fract_delta:
.. rst-class:: classref-property
:ref:`bool<class_bool>` **fract_delta** = ``true``
.. rst-class:: classref-property-setget
- void **set_fractional_delta** **(** :ref:`bool<class_bool>` value **)**
- :ref:`bool<class_bool>` **get_fractional_delta** **(** **)**
如果为 ``为true``\ ,则使用分数增量 delta 计算,将具有更平滑的粒子显示效果。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_interp_to_end:
.. rst-class:: classref-property
:ref:`float<class_float>` **interp_to_end** = ``0.0``
.. rst-class:: classref-property-setget
- void **set_interp_to_end** **(** :ref:`float<class_float>` value **)**
- :ref:`float<class_float>` **get_interp_to_end** **(** **)**
导致该节点中的所有粒子插值到其生命周期结束时。
\ **注意:**\ 这仅在与 :ref:`ParticleProcessMaterial<class_ParticleProcessMaterial>` 一起使用时才有效。对于自定义进程着色器,需要手动实现。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_interpolate:
.. rst-class:: classref-property
:ref:`bool<class_bool>` **interpolate** = ``true``
.. rst-class:: classref-property-setget
- void **set_interpolate** **(** :ref:`bool<class_bool>` value **)**
- :ref:`bool<class_bool>` **get_interpolate** **(** **)**
启用粒子插值,当\ :ref:`fixed_fps<class_GPUParticles3D_property_fixed_fps>` 低于屏幕刷新率时,使粒子运动更平滑。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_lifetime:
.. rst-class:: classref-property
:ref:`float<class_float>` **lifetime** = ``1.0``
.. rst-class:: classref-property-setget
- void **set_lifetime** **(** :ref:`float<class_float>` value **)**
- :ref:`float<class_float>` **get_lifetime** **(** **)**
每个粒子存在的时间(以秒为单位)。有效发射速率为每秒 ``(amount * amount_ratio) / lifetime`` 个粒子。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_local_coords:
.. rst-class:: classref-property
:ref:`bool<class_bool>` **local_coords** = ``false``
.. rst-class:: classref-property-setget
- void **set_use_local_coordinates** **(** :ref:`bool<class_bool>` value **)**
- :ref:`bool<class_bool>` **get_use_local_coordinates** **(** **)**
如果为 ``true``\ ,则粒子使用父节点的坐标空间(称为局部坐标)。这将导致粒子在移动或旋转时沿着 **GPUParticles3D** 节点(及其父节点)移动和旋转。如果为 ``false``\ ,则粒子使用全局坐标;当移动或旋转时,它们不会沿着 **GPUParticles3D** 节点(及其父节点)移动或旋转。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_one_shot:
.. rst-class:: classref-property
:ref:`bool<class_bool>` **one_shot** = ``false``
.. rst-class:: classref-property-setget
- void **set_one_shot** **(** :ref:`bool<class_bool>` value **)**
- :ref:`bool<class_bool>` **get_one_shot** **(** **)**
如果为 ``true``\ ,将只发出 :ref:`amount<class_GPUParticles3D_property_amount>` 数量的粒子。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_preprocess:
.. rst-class:: classref-property
:ref:`float<class_float>` **preprocess** = ``0.0``
.. rst-class:: classref-property-setget
- void **set_pre_process_time** **(** :ref:`float<class_float>` value **)**
- :ref:`float<class_float>` **get_pre_process_time** **(** **)**
动画开始前对粒子进行预处理的时间。让你在粒子开始发射后的一段时间内开始动画。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_process_material:
.. rst-class:: classref-property
:ref:`Material<class_Material>` **process_material**
.. rst-class:: classref-property-setget
- void **set_process_material** **(** :ref:`Material<class_Material>` value **)**
- :ref:`Material<class_Material>` **get_process_material** **(** **)**
用于处理粒子的 :ref:`Material<class_Material>` 。可以是 :ref:`ParticleProcessMaterial<class_ParticleProcessMaterial>`:ref:`ShaderMaterial<class_ShaderMaterial>`
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_randomness:
.. rst-class:: classref-property
:ref:`float<class_float>` **randomness** = ``0.0``
.. rst-class:: classref-property-setget
- void **set_randomness_ratio** **(** :ref:`float<class_float>` value **)**
- :ref:`float<class_float>` **get_randomness_ratio** **(** **)**
发出随机率。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_speed_scale:
.. rst-class:: classref-property
:ref:`float<class_float>` **speed_scale** = ``1.0``
.. rst-class:: classref-property-setget
- void **set_speed_scale** **(** :ref:`float<class_float>` value **)**
- :ref:`float<class_float>` **get_speed_scale** **(** **)**
速度缩放比例。\ ``0`` 的值可被用于暂停粒子。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_sub_emitter:
.. rst-class:: classref-property
:ref:`NodePath<class_NodePath>` **sub_emitter** = ``NodePath("")``
.. rst-class:: classref-property-setget
- void **set_sub_emitter** **(** :ref:`NodePath<class_NodePath>` value **)**
- :ref:`NodePath<class_NodePath>` **get_sub_emitter** **(** **)**
到将被用作子发射器(请参阅 :ref:`ParticleProcessMaterial.sub_emitter_mode<class_ParticleProcessMaterial_property_sub_emitter_mode>`\ )的另一个 **GPUParticles3D** 节点的路径。子发射器可被用于实现烟花、碰撞火花、气泡弹出水滴等效果。
\ **注意:**\ 当 :ref:`sub_emitter<class_GPUParticles3D_property_sub_emitter>` 被设置时,该目标 **GPUParticles3D** 节点将不再自行发射粒子。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_trail_enabled:
.. rst-class:: classref-property
:ref:`bool<class_bool>` **trail_enabled** = ``false``
.. rst-class:: classref-property-setget
- void **set_trail_enabled** **(** :ref:`bool<class_bool>` value **)**
- :ref:`bool<class_bool>` **is_trail_enabled** **(** **)**
如果为 ``true``\ ,则使用网格蒙皮系统来启用粒子尾迹。旨在与 :ref:`RibbonTrailMesh<class_RibbonTrailMesh>` 和 :ref:`TubeTrailMesh<class_TubeTrailMesh>` 一起使用。
\ **注意:**\ 还必须在粒子网格的材质上启用 :ref:`BaseMaterial3D.use_particle_trails<class_BaseMaterial3D_property_use_particle_trails>`\ 。否则,将 :ref:`trail_enabled<class_GPUParticles3D_property_trail_enabled>` 设置为 ``true`` 将无效。
\ **注意:**\ 与 :ref:`GPUParticles2D<class_GPUParticles2D>` 不同,尾迹部分及其细分的数量是在 :ref:`RibbonTrailMesh<class_RibbonTrailMesh>`:ref:`TubeTrailMesh<class_TubeTrailMesh>` 的属性中设置的。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_trail_lifetime:
.. rst-class:: classref-property
:ref:`float<class_float>` **trail_lifetime** = ``0.3``
.. rst-class:: classref-property-setget
- void **set_trail_lifetime** **(** :ref:`float<class_float>` value **)**
- :ref:`float<class_float>` **get_trail_lifetime** **(** **)**
代表粒子轨迹的时间量(以秒为单位)。仅当 :ref:`trail_enabled<class_GPUParticles3D_property_trail_enabled>```true`` 时有效。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_transform_align:
.. rst-class:: classref-property
:ref:`TransformAlign<enum_GPUParticles3D_TransformAlign>` **transform_align** = ``0``
.. rst-class:: classref-property-setget
- void **set_transform_align** **(** :ref:`TransformAlign<enum_GPUParticles3D_TransformAlign>` value **)**
- :ref:`TransformAlign<enum_GPUParticles3D_TransformAlign>` **get_transform_align** **(** **)**
.. container:: contribute
目前没有这个属性的描述。请帮我们\ :ref:`贡献一个 <doc_updating_the_class_reference>`\
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_property_visibility_aabb:
.. rst-class:: classref-property
:ref:`AABB<class_AABB>` **visibility_aabb** = ``AABB(-4, -4, -4, 8, 8, 8)``
.. rst-class:: classref-property-setget
- void **set_visibility_aabb** **(** :ref:`AABB<class_AABB>` value **)**
- :ref:`AABB<class_AABB>` **get_visibility_aabb** **(** **)**
:ref:`AABB<class_AABB>` 确定节点的区域,该区域需要在屏幕上可见,才能使粒子系统处于活动状态。\ :ref:`GeometryInstance3D.extra_cull_margin<class_GeometryInstance3D_property_extra_cull_margin>` 被添加到 AABB 的每个轴上。粒子碰撞和吸引只会发生在该区域内。
如果在节点进入/退出屏幕时,粒子突然出现/消失,则应该增大矩形。\ :ref:`AABB<class_AABB>` 可以通过代码,或使用 **粒子 → 生成 AABB** 编辑器工具生成。
\ **注意:**\ 如果该属性被设置为非默认值,\ :ref:`visibility_aabb<class_GPUParticles3D_property_visibility_aabb>` 会被 :ref:`GeometryInstance3D.custom_aabb<class_GeometryInstance3D_property_custom_aabb>` 覆盖。
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
方法说明
--------
.. _class_GPUParticles3D_method_capture_aabb:
.. rst-class:: classref-method
:ref:`AABB<class_AABB>` **capture_aabb** **(** **)** |const|
返回包含当前帧中所有活动粒子的轴对齐边界框。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_method_convert_from_particles:
.. rst-class:: classref-method
void **convert_from_particles** **(** :ref:`Node<class_Node>` particles **)**
设置该节点的属性以匹配给定的 :ref:`CPUParticles3D<class_CPUParticles3D>` 节点。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_method_emit_particle:
.. rst-class:: classref-method
void **emit_particle** **(** :ref:`Transform3D<class_Transform3D>` xform, :ref:`Vector3<class_Vector3>` velocity, :ref:`Color<class_Color>` color, :ref:`Color<class_Color>` custom, :ref:`int<class_int>` flags **)**
发射单个粒子。是否应用 ``xform``\ 、\ ``velocity``\ 、\ ``color````custom`` 取决于 ``flags`` 的值。请参阅 :ref:`EmitFlags<enum_GPUParticles3D_EmitFlags>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_method_get_draw_pass_mesh:
.. rst-class:: classref-method
:ref:`Mesh<class_Mesh>` **get_draw_pass_mesh** **(** :ref:`int<class_int>` pass **)** |const|
返回在索引 ``pass`` 处绘制的 :ref:`Mesh<class_Mesh>`
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_method_restart:
.. rst-class:: classref-method
void **restart** **(** **)**
重新发射粒子,清除现有的粒子。
.. rst-class:: classref-item-separator
----
.. _class_GPUParticles3D_method_set_draw_pass_mesh:
.. rst-class:: classref-method
void **set_draw_pass_mesh** **(** :ref:`int<class_int>` pass, :ref:`Mesh<class_Mesh>` mesh **)**
设置在索引 ``pass`` 处绘制的 :ref:`Mesh<class_Mesh>`
.. |virtual| replace:: :abbr:`virtual (本方法通常需要用户覆盖才能生效。)`
.. |const| replace:: :abbr:`const (本方法没有副作用。不会修改该实例的任何成员变量。)`
.. |vararg| replace:: :abbr:`vararg (本方法除了在此处描述的参数外,还能够继续接受任意数量的参数。)`
.. |constructor| replace:: :abbr:`constructor (本方法用于构造某个类型。)`
.. |static| replace:: :abbr:`static (调用本方法无需实例,所以可以直接使用类名调用。)`
.. |operator| replace:: :abbr:`operator (本方法描述的是使用本类型作为左操作数的有效操作符。)`
.. |bitfield| replace:: :abbr:`BitField (这个值是由下列标志构成的位掩码整数。)`