导语:
文末有工程地址,通过小游戏来学习特效
入门
下载项目,在文章最下面
按播放开始游戏。按住左键射击并使用W、A、S和D移动。
在本教程中,您将创建两个粒子效果。一个用于船舶的推进器,一个用于船舶爆炸时。要创建这些,您将使用粒子系统。
什么是粒子系统?
顾名思义,粒子系统是一个创建和管理粒子的系统。粒子基本上是空间中的一个点。使用粒子系统,您可以控制粒子的外观和行为。
粒子系统由一个或多个称为发射器的组件组成。这些负责产生粒子。
发射器也有称为模块的组件。模块控制发射器产生的粒子的特定属性。例如,粒子的材料和初始速度。在下面的示例中,使用了两个模块来为每个粒子提供一个红色圆圈材质和随机速度。
您还可以在粒子的生命周期内更改粒子的颜色。在此示例中,粒子的颜色从红色变为蓝色:
现在您已经了解了粒子系统是什么,是时候为飞船的推进器创建一个了。
创建粒子系统
导航到ParticleSystems文件夹并单击Add New\Particle System。将粒子系统重命名为PS_Thruster,然后打开它。
Cascade:粒子系统编辑器
Cascade 由四个主要面板组成:
- 视口:此面板将显示您的粒子系统的预览。您可以通过按住右键单击并移动鼠标来环顾四周。要移动,请按住右键单击并使用WASD键。按F键可以快速定位,操作和在编辑器一样
- 详细信息:您选择的任何组件(发射器、模块等)都将在此处显示其属性。如果未选择任何内容,它将显示粒子系统的属性。
- 发射器:此面板将显示从左到右的发射器列表。每个发射器显示其模块的列表。
- 曲线编辑器:曲线编辑器允许您可视化和调整模块曲线的值。并非所有模块属性都支持曲线。
现在,粒子系统正在使用默认的粒子材质。
首先,您将使用圆形材质替换粒子材质。
将材质应用于粒子
转到发射器面板并选择所需模块。
必需模块包含必要的属性,例如粒子材料和发射器持续时间。每个发射器都必须有一个必需的模块。
要更改材质,请转到 Details 面板并将Material设置为M_Particle。这会将粒子的外观更改为橙色圆圈。
直接使用工程效果是白色,不要紧往下看
接下来,您将粒子系统附加到玩家的飞船上。
附加粒子系统
返回主编辑器并导航到Blueprints文件夹。打开BP_Player,然后转到 Components 面板。
要使用粒子系统,您可以使用粒子系统组件。创建一个并将其重命名为ThrusterParticles。确保将其附加到碰撞组件。
要指定粒子系统,请转到 Details 面板并找到Particles部分。将模板设置为PS_Thruster。
接下来,将ThrusterParticles的位置设置为(-80, 0, 0)。这将把它放在船的后面。
最后,将Rotation设置为(0, 90, 0)。这将定向粒子系统,使粒子远离飞船。
单击编译,然后返回主编辑器。按Play查看粒子系统的效果。
粒子系统正在工作,但粒子移动有点太慢而且非常小。您可以通过设置粒子的初始速度和大小来解决此问题。
设置粒子的速度和大小
首先,您将设置粒子的初始速度。打开PS_Thruster,然后选择Initial Velocity模块。之后,展开Start Velocity\Distribution。
默认情况下,粒子的初始速度范围为(-10, -10, 50)到(10, 10, 100)。
要以更快的速度将粒子从飞船上移开,您需要做的就是增加Z速度。将Min Z设置为300,将Max Z设置为400。
以下是原始速度和新速度之间的比较:
接下来,您将设置粒子的初始大小。
设置粒子的大小
选择Initial Size模块,然后转到 Details 面板。之后,展开Start Size\Distribution。
与 Initial Velocity 模块一样,Initial Size 也有最小和最大范围。但是,对于本教程,您会将大小设置为一个常量值。为此,请将 Distribution 设置为Distribution Vector Constant。
注意:分布允许您在范围内或曲线上指定恒定值。您还可以使用蓝图设置值。要了解更多信息,请前往虚幻引擎文档中的分发页面。
然后,将Constant设置为(70, 70, 70)。这是一个尺寸比较:
返回主编辑器并按Play。
粒子看起来更好,但它们之间的距离仍然很远。这是因为粒子生成之间的持续时间过长。要解决此问题,您可以提高生成率。
增加粒子生成率
要提高生成率,您需要使用Spawn模块。该模块控制发射器产生粒子的速度。除了必需之外,每个发射器都必须有一个 Spawn 模块。
打开PS_Thruster然后选择Spawn。转到 Details 面板,然后展开Spawn\Rate部分。
将常数设置为50。这会将生成速率提高到每秒 50 个粒子。
返回主编辑器并按Play。
如您所见,它现在看起来更像一条小径。为了使粒子看起来更像推进器火焰,您可以随着时间的推移缩小它们。
随着时间的推移缩小粒子
打开PS_Thruster,然后转到 Emitters 面板。
要缩小粒子,您可以使用Size By Life模块。该模块将在其生命周期内将乘数应用于粒子的大小。通过右键单击发射器中的空白空间并选择Size\Size By Life来创建一个。
默认情况下,这对粒子的大小没有视觉影响。这是因为乘数始终设置为 1。要缩小粒子,您需要调整模块的曲线,使大小乘数随时间减小。但首先,什么是曲线?
什么是曲线?
曲线是点的集合。每个点有两个东西:一个位置和一个值。
当你有两个或更多点时,你就形成了一条线。下面是基本线性曲线的示例。点 A的位置和值为0。点 B的位置为2,值为1。
如果您在任何位置对线性曲线进行采样,它的功能类似于线性插值。例如,如果您在位置1对上面的曲线进行采样,您将收到0.5的值。
如果您创建一条下降的曲线,您收到的价值将逐渐变小。这是您要用于“按寿命计算尺寸”模块的曲线类型。
现在,您将在 Cascade 中创建上面的曲线。
修改模块的曲线
选择Size By Life,然后转到 Details 面板。之后,展开Life Multiplier\Distribution\Constant Curve\Points。在这里,您将看到Life Multiplier曲线的点列表。
In Val是曲线上点的位置。对于Size By Life,值0表示粒子生命的开始。值1表示粒子生命周期的结束。
要随时间减小尺寸乘数,您需要减小第二个点的Out Val。将点1的值设置为(0, 0, 0)。这将随着时间的推移将粒子的大小减小到 0。
您可以使用曲线编辑器可视化Life Multiplier曲线。为此,请单击Size By Life模块上的图形图标。
这会将生命乘数添加到曲线编辑器中。要将曲线拟合到视图中,请单击曲线编辑器中的拟合。
如您所见,在粒子的生命周期内,大小乘数从 1 减小到 0。
返回主编辑器并按播放
粒子现在看起来更像火焰!您将添加到此粒子系统的最后一件事是颜色变化。
添加颜色变化
要使用 Cascade 设置粒子的颜色,您需要正确设置粒子材质。导航到Materials文件夹并打开M_Particle。
目前,颜色是在材质中设置的。要使用粒子系统中的颜色,您需要使用ParticleColor节点。
首先,删除连接到Emissive Color的节点。接下来,添加一个ParticleColor节点并像这样连接它:
揭示
单击应用,然后关闭M_Particle。
要设置粒子的颜色,可以使用Initial Color模块。
初始颜色模块
打开PS_Thruster,然后添加一个Initial Color模块。您可以在颜色类别下找到它。
要添加颜色变化,您需要指定颜色的范围。为此,您可以使用分布。
选择初始颜色,然后转到详细信息面板。展开Start Color部分并将 Distribution 更改为Distribution Vector Uniform。这将允许您为每个颜色通道指定一个范围。
对于本教程,颜色范围应为橙色到红色。为此,请将Max设置为(1.0, 0.0, 0.0)并将Min设置为(1.0, 0.35, 0.0)。
如果您查看视口,您会发现颜色表现异常。
虚幻引擎 4 粒子系统教程
这是因为Color Over Life模块不断将颜色更新为白色。要解决此问题,请选择Color Over Life并按Delete。您的模块列表现在应该如下所示:
关闭PS_Thruster,然后在主编辑器中按Play 。看看那些推进器的火焰!
接下来,您将学习如何切换粒子系统,具体取决于船是否在移动。
切换粒子系统
要检查船是否在移动,您可以检查玩家是否按下了任何移动键。
打开BP_Player并找到Event Tick节点。将以下设置添加到节点链的末尾:
让我们来看看这个设置的作用:
- 这将检查MoveUp和MoveRight轴映射。如果两者都返回0,则意味着玩家没有按下任何移动键。
- 如果Branch返回true(玩家没有按下任何移动键),则停用ThrusterParticles
- 如果Branch返回false(玩家正在按下移动键),则激活ThrusterParticles
单击编译,然后关闭BP_Player。按播放并在移动和不移动之间切换以查看切换。
现在是有趣的部分了:创建一个爆炸粒子系统!
创建爆炸效果
您将复制推进器粒子,而不是创建新的粒子系统。导航到ParticleSystems文件夹,右键单击PS_Thruster并选择Duplicate。将其重命名为PS_Explosion然后打开它。
对于爆炸,所有粒子应该同时产生而不是一个一个产生。这称为突发发射。
创建突发
首先,您需要将生成率设置为零,因为您不想使用默认生成行为。选择Spawn模块并将Spawn\Rate\Distribution\Constant设置为0。
接下来,您需要告诉发射器您要创建一个爆发。向下滚动到Burst部分并将新条目添加到Burst List。您可以通过单击+图标来执行此操作。
每个条目将包含三个字段:
- 计数:产生多少粒子。将此设置为20。
- Count Low:如果大于或等于 0,则生成的粒子数量范围为Count Low到Count。将其保留为-1。
- 时间:何时产生粒子。值 0 表示发射器生命周期的开始。值 1 表示发射器的生命周期结束。将其保留为0.0。
注意:您可以在“必需”模块中找到发射器的持续时间。它在Duration部分下列为Emitter Duration。
这意味着发射器将在其生命之初产生20 个粒子。
为了让它看起来像爆炸,你需要设置速度,使粒子向外移动。
向外移动粒子
由于这是一个自上而下的游戏,您只需要指定 X 和 Y 速度。选择Initial Velocity模块并展开Start Velocity\Distribution。将Max设置为(1000, 1000, 0)并将Min设置为(-1000, -1000, 0)。
通过指定从负到正的范围,粒子将从发射器向外移动。
接下来,您需要设置发射器应循环的次数。
Setting the Emitter Loops
默认情况下,发射器将无限循环。 这对于火焰和烟雾等效果非常有用,但爆发应该只播放一次。 要解决此问题,您需要告诉发射器仅循环一次。
选择所需模块,然后找到持续时间部分。 将发射器循环设置为 1。
现在,是时候在敌人死亡时播放爆炸了!
Spawning Particles on Enemy Death
返回主编辑器并导航到 Blueprints 文件夹。 打开 BP_Enemy,然后找到 OnDeath 事件。
要生成粒子系统,您可以在 Location节点处使用Spawn Emitter 。创建一个并将其连接到Destroy Actor。
接下来,将Emitter Template设置为PS_Explosion。
最后,创建一个GetActorLocation并将其连接到Location引脚。
现在,当敌人死亡时,它会在敌人的位置生成一个PS_Explosion实例。
单击编译,然后返回主编辑器。按播放并开始拍摄一些坏人。
看看那些爆炸!接下来,您将通过使它们与敌人的颜色相同来为它们添加一些额外的香料。
将爆炸颜色更改为敌人颜色
要使用敌人的颜色,您需要一种从蓝图中接收该信息的方法。幸运的是,Cascade 有一个允许这样做的分发类型。
打开PS_Explosion并选择Initial Color模块。将Start Color\Distribution设置为Distribution Vector Particle Parameter。
这将为您提供一个可以使用蓝图设置的参数。将参数名称设置为PrimaryColor
对于爆炸,您将使用敌人的两种颜色。要使用第二种颜色,您将需要另一个发射器。右键单击发射器上的空白区域并选择Emitter\Duplicate and Share Emitter。这将复制发射器。
您会注意到现在每个模块旁边都有一个+号。通过使用Duplicate 和 Share Emitter而不是Duplicate,您已经链接了模块而不是复制它们。您在一个模块中所做的任何更改也将在另一个发射器的同一模块中发生。如果您想更改所有发射器的属性(例如大小),这很有用。
您需要更改的唯一模块是Initial Color。但是,如果您进行更改,两个发射器都会收到更改。在这种情况下,您不希望模块被链接,因为它们需要单独的参数名称。取消链接的最简单方法是删除重复的初始颜色模块并创建一个新模块。
注意:在撰写本文时,没有用于取消链接模块的内置方法。
选择新的Initial Color并将Start Color\Distribution设置为Distribution Vector Particle Parameter。接下来,将Parameter Name设置为SecondaryColor。
至此,粒子系统就完成了。关闭PS_Explosion。
接下来,您需要使用蓝图设置参数。
使用蓝图设置粒子参数
打开BP_Enemy,然后在Spawn Emitter 之后的 Location添加突出显示的节点:
这将允许您在PS_Explosion中设置两个参数。
现在,您需要设置正确的参数名称。将第一个Set Color Parameter的Parameter Name设置为PrimaryColor。将第二个Set Color Parameter的Parameter Name设置为SecondaryColor
最后,您需要提供颜色。为了使事情更容易,颜色已经存储在变量PrimaryColor和SecondaryColor中。将每个变量连接到它们各自的节点,如下所示:
这是您最终应该得到的结果:
让我们回顾一下事件的顺序:
- 当敌人死亡时,它会在其位置生成一个PS_Explosion实例
- PS_Explosion的PrimaryColor参数将被设置
- 将设置PS_Explosion的SecondaryColor参数
单击编译,然后关闭BP_Enemy。按播放并开始射击敌人以查看粒子混乱!
工程地址:张乂卓从头学UE4/Particle
原文链接:https://www.raywenderlich.com/270-unreal-engine-4-particle-systems-tutorial