粒子系统(2D)

简介

Godot提供了一种简单(但对于大多数用途而言足够灵活)的粒子系统。 粒子系统用于模拟复杂的物理效应,如火花,火焰,魔法粒子,烟雾,雾气,等。

这个想法是以固定的间隔发射具有固定的寿命的“粒子”。 在其生命周期中,每个粒子都具有相同的基本行为。 让每个粒子变得不同并提供整体更加”有机”外观的是与各个参数相关的“随机性”。 实质上,创建粒子系统意味着设置基本物理参数,然后为它们添加随机性。

粒子节点

Godot为2D粒子提供了两个不同的节点: class_Particles2Dclass_CPUParticles2D 。 Particles2D更为先进,并使用GPU处理粒子效果,但这将其限制于相对高端的图形API中,在我们的情况下仅限于GLES3渲染器。对于使用GLES2后端的项目,CPUParticles2D是一个CPU驱动的选项。其功能与Particles2D接近,但性能较低。Particles2D是通过 class_ParticlesMaterial (以及可选的自定义Shader)来配置的,但相应的选项在CPUParticles2D中是通过节点属性提供的(轨迹设置除外)。您可以通过单击场景中的节点,然后在工具栏的“粒子”菜单中选择“转换为CPU粒子”,将Particles2D节点转换为CPUParticles2D节点。

../../_images/particles_convert.png

这个教程的其余部分将使用Particles2D节点。首先, 添加一个Particles2D节点到场景中。 在创建该节点后,您会注意到只创建了一个白点,并且在场景面板(左上角)的Particles2D节点旁边有一个警告图标。 这是因为节点需要ParticlesMaterial才能工作。

ParticlesMaterial(粒子材质)

要将运行材质添加到粒子节点,请转到 属性面板 面板中的 Process Material 。 单击 Material 旁边的框,然后从下拉菜单中选择 New Particles Material

../../_images/particles_material.png

您的Particles2D节点现在应该可以向下发射白点了。

../../_images/particles1.png

Texture (纹理)

粒子系统只能使用单个纹理(将来可能会通过spritesheet扩展到动画纹理)。 纹理通过相关的纹理属性设置:

../../_images/particles2.png

Time (时间)参数

Lifetime(寿命)

每个粒子存活的时间(以秒为单位)。 生命周期结束时,会创建一个新粒子来替换它。

寿命 : 0.5

../../_images/paranim14.gif

寿命 : 4.0

../../_images/paranim15.gif

One Shot (一次性)

启用后,Particles2D节点将一次性发出所有粒子,然后再也不发射。

Preprocess(预处理)

粒子系统从没有粒子被发射开始,然后开始发射。 当加载场景如火炬,雾等系统时可能会带来不便,因为它会在进入场景的那一刻开始发射。 预处理用于让系统在第一次实际绘制之前处理给定的秒数。

Speed Scale(速度比例)

速度比例具有默认值 1 ,用于调整粒子系统的速度。 降低值会使粒子变慢,而增加值会使粒子更快。

Explosiveness(爆炸性)

如果有10个寿命为 1 的粒子,则意味着粒子将每0.1秒发射一次。 爆炸性参数改变了这一点,并迫使粒子一起发射。 范围是:

  • 0:定期发射粒子(默认值)。
  • 1:同时发射所有粒子。

中间的值也是允许的。 此功能对于创建爆炸或突然爆发的粒子非常有用:

../../_images/paranim18.gif

Randomness(随机性)

所有物理参数都可以随机化。随机值范围从 01 。随机化参数的公式为:

initial_value = param_value + param_value * randomness

Fixed FPS(固定帧率)

此设置可用于将粒子系统设置为以固定的帧率渲染。 例如,将值更改为 2 将使粒子以每秒2帧的速度渲染。 请注意,这不会减慢粒子系统本身的速度。

Fract Delta

这可用于打开或关闭Fract Delta。

Drawing parameters (绘图参数)

Visibility Rect(可见性区域)

可见性矩形控制粒子在屏幕上的可见性。 如果此矩形位于视区之外,则引擎将不会在屏幕上渲染粒子。

矩形的 WH 属性分别控制其宽度和高度。 XY 属性控制矩形左上角相对于粒子发射器的位置。

可以使用2D视图上方的工具栏自动生成可见性区域。为此,请选择Particles2D节点,然后单击 粒子 > 生成可视化区域 。 Godot将模拟Particles2D节点发射粒子几秒钟,并将矩形区域设置为适合粒子的大小。

你可以使用 Generation Time (sec) 选项控制发射持续时间。 最大值为25秒。 如果您需要更多时间让粒子移动,您可以暂时更改Particles2D节点上的 preprocess 时间。

Local Coords(局部坐标)

默认情况下,此选项处于启用状态,这意味着粒子发射的空间是相对于节点来算的。 如果移动节点,则所有粒子会随之移动:

../../_images/paranim20.gif

如果禁用,粒子将发射到全局空间,这意味着如果移动节点,则已发射的粒子不会受到影响:

../../_images/paranim21.gif

Draw Order(绘图顺序)

这可以控制绘制单个粒子的顺序。 Index 表示粒子根据它们的发射顺序被绘制(默认)。 Lifetime 表示它们按照剩余寿命的顺序被绘制。

ParticlesMaterial(粒子材质)设置

Spread(铺开角度)

此参数是以度为单位的角度,它会被随机加减到基础 Direction 上。 180 的铺开角度将向所有方向发射(+/- 180)。

../../_images/paranim3.gif

Gravity(重力)

应用于每个粒子上的重力。

../../_images/paranim7.gif

Initial Velocity(初始速度)

初始速度是粒子发射的速度(以像素/秒为单位)。 以后可以通过重力或其他加速度来修改速度(下面将进一步描述)。

../../_images/paranim4.gif

Angular Velocity(角速度)

角速度是应用于粒子的初始角速度。

Spin Velocity(旋转速度)

旋转速度是粒子围绕其中心转动的速度(以度/秒为单位)。

../../_images/paranim5.gif

Orbit Velocity(环绕速度)

环绕速度速度用于使粒子绕它们的中心转动。

../../_images/paranim6.gif

Linear Acceleration(线性加速度)

应用于每个粒子的线性加速度。

Radial Acceleration(径向加速度)

如果此加速度为正,则粒子会向远离发射中心加速。 如果是负的,他们会被加速吸进去。

../../_images/paranim8.gif

Tangential Acceleration(切向加速度)

该加速度会使用从粒子到中心点的切向量,结合径向加速度可以做出很酷炫的效果。

../../_images/paranim9.gif

Damping(阻尼)

阻尼选项会对颗粒施加摩擦力,迫使它们停止。 它特别适用于火花或爆炸,火花或爆炸通常以高线速度开始,然后在他们隐去时停下来。

../../_images/paranim10.gif

Angle(角度)

确定粒子的初始角度(以度为单位)。 该参数通常在随机化后会有用。

../../_images/paranim11.gif

Scale(大小)

确定粒子的初始大小。

../../_images/paranim12.gif

Color(颜色)

用于改变发射出来的粒子颜色。

Hue Variation(色调变化)

Variation 值设置的是应用于每个粒子的初始色调变化。 Variation Rand 值控制色调变化的随机性比率。

Emission Shapes(发射形状)

ParticlesMaterial 可以让你设置一个发射遮挡(Emission Mask),它决定了粒子发射的区域和方向。这些可以用项目中的纹理来生成。

确保设置了ParticlesMaterial,选中Particles2D节点。工具栏中应显示“Particles(粒子)”菜单:

../../_images/emission_shapes1.png

打开它,选择“加载 Emission Mask(发射遮挡)”:

../../_images/emission_shapes2.png

然后选择你想要用作遮挡的纹理:

../../_images/emission_shapes3.png

会出现一个具有多个设置的对话框。

Emission Mask(发射遮挡)

纹理可以生成三种类型的发射遮罩:

  • Solid Pixels(实心像素):粒子将从纹理的任何区域产生,透明区域除外。
../../_images/emission_mask_solid.gif
  • Border Pixels(边界像素):粒子将从纹理的外边缘产生。
../../_images/emission_mask_border.gif
  • Directed Border Pixels(定向边界像素):类似于边界像素,在遮罩中添加额外的信息,使粒子能够从边缘发射出去。请注意,想要使用它,需要设置一个 初始速度
../../_images/emission_mask_directed_border.gif

Emission Colors(发射颜色)

Capture from Pixel 会使粒子在其产生点处继承遮挡材质的颜色。

一旦你点击“确定”,将生成遮挡并设置为粒子材质。可以在 Emission Shape(发射形状) 部分看到它:

../../_images/emission_shapes4.png

这个部分所有提到的值, “加载Emission Mask(发射遮挡)”菜单都会自动生成,所以通常他们放着不管就可以了。

注解

不应该直接添加图像到 Point TextureColor Texture 中。应该始终使用“加载Emisson Mask(发射遮挡)”菜单。