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.

3D 粒子系统属性

发射器属性

../../../_images/particle_props_emitter.webp

Emitting 属性旁边的复选框用于激活和停用粒子系统。只有选中该复选框被时,才会处理和渲染粒子。如果需要动态激活或停用粒子系统,可以在运行时设置此属性。

Amount 属性控制着在任何时间下可见粒子的最大数量。增加这个值将会在消耗性能的同时生成更多的粒子。

Amount Ratio 属性是粒子与要射出的粒子数量的比例。如果它小于 1.0,则生命周期内发射的粒子数量将为 Ammount * Amount Ratio。发射后更改此数值不会影响已创建的粒子,也不会导致粒子系统重新启动。对于制作发射粒子的数量随时间变化的效果来说这个属性很有用。

可以将另一个粒子节点设置为 子发射器,它将作为每个粒子的子节点生成。有关如何将子发射器添加到粒子系统的详细说明,请参阅本手册中的子发射器部分。

时间属性

../../../_images/particle_props_time.webp

Lifetime 属性控制每个粒子在消失之前存在的时间长短,以秒为单位。许多粒子属性都可以在粒子生命周期内设置而变化,从一个值平滑过渡到另一个值。

LifetimeAmount 是相互关联的,决定了粒子系统的发射速率,要知道每秒产生多少粒子,可以使用以下公式:

\[每秒粒子数 = \frac{Amount}{Lifetime}\]

示例:以每个粒子寿命为4秒的速度发射32个粒子,意味着该系统每秒发射8个粒子。

Interp to End 属性会使节点中的所有粒子在其生命周期结束时进行插值。

如果选中 One Shot 属性旁边的复选框,则粒子系统将会发射 amount 数量的粒子,然后自行禁用,会仅运行一次。默认未选中此属性,系统将持续发射粒子,直到手动禁用或销毁。一次性粒子非常适合用于单个事件做出反应的特效,例如,物品拾取或子弹击中墙壁时迸发出的碎片。

Preprocess 属性用于将时间快速推进到粒子系统生命周期的中间某个点,从那里开始渲染,以秒为单位进行测量。如果值为 1 ,则粒子系统开始运行时,将看起来已经运行了一秒钟。

尽管刚刚加载到场景中,希望粒子系统看起来已经活跃了一段时间,那么这个功能非常有用。请考虑以下示例。两个粒子系统都模拟了在该区域内飞舞的灰尘。如果预处理值为 0 ,则在前几秒钟内不会有灰尘,因为系统还没有发射足够的粒子以使效果变得明显。这可以在左侧的视频中看到,与其右侧的视频进行比较,其中粒子系统已预处理了 4 秒。从一开始,灰尘就完全可见了,因为跳过了前四秒的 "装载" 时间。

../../../_images/particle_preprocess.webp

无预处理(左侧)与 4 秒预处理(右侧)

可以设置 Speed Scale 属性来减慢或加快粒子系统的速度。这既适用于数据处理,也适用于渲染粒子。将其设置为 0 可以完全暂停粒子系统,或者将其设置为 2 ,使其移动速度加快一倍。

../../../_images/particle_speed_scale.webp

不同的速度缩放值:0.1(左侧),0.5(中间),1.0(右侧)

Explosiveness 属性控制粒子是顺序发射还是同时发射。值为 0 表示粒子一个接一个地发射。值为 1 表示所有 amount 粒子同时发射,从而使效果看起来更具爆炸性。

Randomness 属性为粒子发射时间添加了一些随机性。当设置为 0 时,完全没有随机性,一个粒子和下一个粒子的发射间隔始终相同:粒子以固定间隔发射。当 Randomness 值为 1 时,间隔完全随机。可以使用该属性来打破效果中的一些均匀性。当 Explosiveness 设置为 1 时,该属性无效。

粒子以低帧率运行

关闭插值(左侧)vs. 启用插值(右侧)

Fixed FPS 属性限制了粒子系统的处理频率,包括属性更新以及碰撞和吸引器。这可以有效提高性能,特别是在大量使用粒子碰撞的场景中。请注意,这不会改变粒子移动或旋转的速度。要更改这些属性,应该使用 Speed Scale 属性。

Fixed FPS 设置为非常低的值时,你会注意到粒子动画开始看起来不流畅。如果符合艺术设计,有可能是期望的效果,但大多数情况下,会希望粒子系统动画是平滑的。这就是 Interpolate 属性的作用,它会在更新之间混合粒子属性,因此即使粒子系统以 10 FPS运行,看起来也像是 60 FPS运行一样平滑。

备注

使用 粒子碰撞 时,如果粒子移动速度快且碰撞器较薄,则可能会发生隧道效应。这可以通过增加固定 FPS(以性能为代价)来解决。

碰撞属性

参见

设置粒子碰撞需要按照《3D粒子碰撞》中描述的进一步步骤进行。

Base Size 属性定义了每个粒子的默认碰撞大小,用于检查粒子当前是否与环境发生碰撞。通常,希望这个大小与粒子的大小大致相同。对于非常小且移动非常快的粒子,增加此值可以防止其穿过碰撞几何体。

绘制属性

粒子绘制属性

Visibility AABB 属性定义了一个围绕粒子系统原点的盒子。只要这个盒子的任意部分在相机的视野内,粒子系统就是可见的,一旦离开相机视野,粒子系统将停止渲染,可以尽可能使盒子较小来提高性能。

设置 Visibility AABB 的大小时需要注意的一点是,当粒子系统离开相机视野时,超出其边界的粒子会立即消失。虽然在技术上来说这不算bug,但可能带来不好的视觉体验。

当选中 Local Coords 属性时,所有粒子计算都使用局部坐标系来确定诸如上下、重力和运动方向等。例如,上下会跟随粒子系统或其父节点而旋转。当未选中该属性时,这些计算将使用全局世界空间:在世界空间中,向下始终为 -Y ,不跟随粒子系统旋转。

../../../_images/particle_coords.webp

局部空间坐标(左)与世界空间坐标(右)

Draw Order 属性控制着单个粒子绘制时的顺序。Index 代表以发射顺序绘制:即后生成的粒子会绘制在先生成的粒子的顶层。。Lifetime 代表以剩余生命周期顺序绘制。Reverse Lifetime 则是反转了 Lifetime 的绘制顺序。View Depth 代表以与摄像机的距离顺序绘制:距离摄像机更近的粒子绘制在更远的粒子顶层。

Transform Align 属性控制粒子的默认旋转。Disabled 意味着它们不以任何特定的方式对齐,相反,它们的旋转由处理材质设置的值决定。Z-Billboard 表示粒子将始终面向相机,类似于 Standard MaterialBillboard 属性。Y to Velocity 表示每个粒子的 Y 轴与其移动方向对齐,这对于子弹或箭矢之类的物体很有帮助,因为你希望粒子一直指向“前方”。Z-Billboard + Y to Velocity 结合了前两种模式。每个粒子的 Z 轴将指向相机,而Y 轴与速度对齐。

尾迹属性

粒子尾迹

粒子尾迹属性

Enabled 属性控制粒子是否渲染为尾迹。如果想使用粒子尾迹,就需要勾选该框。

Length Secs 属性控制尾迹应该被发射多长。该持续时间越长,尾迹就会越长。

有关粒子尾迹工作原理及其设置方法的详细说明,请参阅本手册中的粒子尾迹部分。