我们分享加拿大的游戏开发者Mirza Beig,在不使用插件和脚本的情况下,创作绚丽的粒子星系效果。
Part 7:基础银河系盘
这部分是一个简单平坦的粒子系统,它将作为银河系盘的基础。我们复制具有相似设置的核心光亮粒子系统。
将Start Size改为固定值8,将Start Color改为透明度较高的深蓝色。
将Emission模块的Rate over Time改为2
将Render Mode改为Mesh,Mesh部分设为Quad。Sorting Fudge设为-32, Render Alignment设为Local。该类型渲染对齐(Render Alignment)表示粒子会朝Transform的方向淡化。
本示例我们想要制作一个平面银河系盘,所以我们还要设置Transform的Rotation,我们将Transform组件的Rotation X值设为90。
Part 8:蓝色烟雾银河系盘
我们将添加一个带有烟雾精灵图集的动态银河系盘。
首先复制第7部分粒子系统。我们将Material改为Alpha烟雾散开精灵图集动画,并将Sorting Fudge改为8。
现在设置的材质使用了Alpha混合补帧着色器,它能够在当前帧和下一帧之间平滑地交叉淡化。使用该着色器是因为该系统粒子的存在时间会比精灵图集的帧更长,我们不希望每次在系统为粒子选择新帧时出现跳帧现象。
为了让该着色器正常工作,需要传入额外数据,我们可以勾选Custom Vertex Streams,并添加UV2流和AnimBlend流。
我们将Start Lifetime改为15,使Start Size在5~8之间随机取值,勾选3D Start Rotation,从而设置该选项下的Z值在0~360之间随机取值,然后将Start Color改为透明度较高的白色。
勾选3D Start Rotation是因为当启用Shape模块后,我们需要指明仅需要在本地Z轴随机选择旋转角度,否则随机的2D旋转角会导致每条轴都随机变化。
因为我们还未设置好该粒子系统,使其按照8×8、64帧精灵图集处理纹理,所以会得到以下画面。
启用Texture Sheet Animation模块,并将Tiles的X和Y值分别设为8。我们对Frame over Time曲线稍加修改,使其从0.05开始并调整曲线形状,如下图所示。
将Tiles设为8×8会立即得到以下结果。我们得到的烟雾银河系盘中,烟雾太过密集,无法很好地和之前的粒子系统进行融合。
我们将Emission模块的Rate over Time将为0.5。
启用Shape模块,并将Scale的XYZ值改为0.25、0.25和0.05。该粒子系统由基础银河系盘复制得来,绕着X轴旋转了90度,这样会使其沿着本地XY空间,即世界空间XZ发射和扩散粒子,并在本地Z空间小范围分布。
现在对Color over Lifetime模块和Size over Lifetime模块进行调整。我们让颜色从纯白色浅入,然后淡出为淡蓝色。Size部分调整为均匀向上的曲线。
最后在Rotation over Lifetime模块中,将Angular Velocity改为在-10~5之间随机取值,这样会对俯视角银河系盘设定顺时针运动的随机旋转角。
Part 9:橙色烟雾银河系盘
这是通过复制得来前一部分粒子系统的变体,只不过它时橙色的。
首先修改Material,设为附加动画混合烟雾的精灵图集。Sorting Fudge设为-4,使该粒子系统处于其它烟雾银河系盘之上的图层。
在Main模块中,将Start Lifetime降低为10,使Start Size在8~12之间随机取值。将Start Color设为Random between Two Colors,并将二个颜色设为透明度不同的白色。
修改Color的渐变端点,使其在较亮的棕黄色和较暗的橘红色之间变化。
将Angular Velocity的随机值调整为-5~10之间。我们要让粒子按逆时针旋转,和蓝色烟雾银河系盘方向相反
Part 10:垂直耀斑
在这一部分,我们将创建一个全新的粒子系统,其效果类似“类星体光束”。
我们将Render Mode设为Mesh,Mesh设为Quad。我们将使用Ultimate VFX中的模糊闪光精灵材质。为了让网格面向本地Transform方向,我们将Render Alignment设为Local。
然后得到下图所示的结果。如果你不使用Ultimate VFX的话,该图像可作为选取纹理时的参考
在Main模块中,我们勾选Prewarm,将Start Lifetime设为2,Start Speed设为0。我们希望这些粒子沿着本地Y轴垂直拉伸,因此勾选3D Start Size,并将XYZ设为0.5、10和1,然后将Start Color设为部分透明的橙色。
我们将得到下图的效果。
至此,我们已接近到最后的成品了,但现在粒子太多,扩散范围太大,所以我们需要将Emission模块的Rate over Time设为2,禁用Shape模块
于是,我们得到了下图所示基础的光晕/类星体光束形状。
此时,因为旧粒子被替换时没有经过平滑的过渡,耀斑可能会偶尔闪烁,我们可以通过设置粒子浅入和淡出时的颜色来解决这个问题,按下图设置Color over Lifetime模块即可。
Part 11:垂直耀斑闪烁
我们可以尝试让闪烁效果以五倍速度呈现。虽然第10部分移除了部分闪烁效果,但我们仍想在光束上应用特殊类型的可控闪烁效果,从而得到风格化电影效果。
我们复制上部分系统,然后进行修改。
在Main模块上,将Start Lifetime设为在0.02~0.05之间随机取值。勾选3D Start Size,让X值在0.1~0.4之间取值,Y值在5~10之间取值。最后我们将Start Color的透明度调到最大。
在Emission模块,将Rate over Time设为在1~50之间随机取值。
加入耀斑后,得到下图的效果。
Part 12:垂直耀斑旋转余烬
这一部分,我们将制作绕着星系中类星体光束旋转的残存粒子。
首先,我们新建一个粒子系统,将Material设为附加点精灵,这与星系螺旋粒子一样。
我们勾选Prewarm,Start Lifetime设为在5~10之间随机取值。Start Speed设为0.01,这样设置能实现细微的随机扩散效果。Start Size设为在0.05和0.125之间随机取值,Start Color设为橙褐色。
将Emission模块的Rate over Time设为5。
我们需要一个点状的发射源,所以将Shape模块的Shape设为Sphere,Radius设为0.01,并将Radius Thickness设为0。
现在对Velocity over Lifetime模块进行配置。Linear速度的Y值设为在-0.25~0.25之间随机取值,Orbital速度的Y值设为在1~2之间随机取值,最后将Radial速度设为0.05。
现在我们得到了旋转粒子的光束形状,下面我们只需要使粒子有动态的大小和不透明度即可。
我们将Color over Lifetime的透明度设为浅入,保留,再淡出。我们对Size over Lifetime模块进行设置,使粒子快速放大,然后再缓慢减小。
Part 13:具有轨迹的垂直光晕余烬和尾迹
这一部分将在余烬进行旋转时,加入一些流线型尾迹。
首先复制上部分粒子系统。我们在Main模块将Start Lifetime的第二个随机值改为8。
将Emission模块的Rate over Time改为1。
将Shape模块的Radius改为0.1。
将Velocity over Lifetime模块的Radial速度改为0.1。
将Renderer模块的Trail Material设为Ultimate VFX的haze2尾迹材质。该材质之前在大型外部星系螺旋中使用。
现在我们需要让尾迹开始渲染。勾选Trails模块,将Minimum Vertex Distance设为0,Width over Trail设为0.5,对Color over Trail进行设
加入尾迹后,我们会得到下图的效果
Part 14:闪烁
现在星系部分已经完成,我们将添加一些额外的效果,使整体效果更华丽,首先我们加入闪烁效果。
首先,我们新建一个粒子系统,将Renderer模块的Material设为Ultimate VFX的附加闪光精灵
在Main模块,勾选Prewarm。设置Start Lifetime在0.1~0.2之间随机取值。将Start Speed设为0。勾选Enable 3D Start Size,将X和Y值设为在0.05~0.25之间随机取值,这将导致粒子会随机地挤压和拉伸,就像奇特的闪烁星星一样。最后将Start Color设为在蓝色和橙红色之间随机选取。
将Emission模块的Rate over Time设为5
现在处理Shape模块。将Shape属性设为Sphere,Radius设为2。我们希望将粒子发射器形状为薄盘状,但又不完全是平面,所以将Scale的Y值设为0.1。
下图是发射器的样子。请无视粒子的数量,为了展示生成区域,增大了粒子数量。
启用Size over Lifetime模块,并按下图设置Size的曲线。这样粒子会快速浅入再缓慢淡出。
Part 15:电磁爆射
星系会有随机的电磁爆射效果,效果很炫酷,它也是星系效果的最后一部分。
这是一个完全基于尾迹的效果,首先新建一个粒子系统。我们将Renderer模块的Render Mode设为None。将Trail Material指定为Ultimate VFX的附加固体发光轨迹材质
接下来处理Main模块。我们勾选Prewarm,将Start Lifetime设为在0.1~ 0.25之间随机取值。Start Speed在2~5之间随机取值。Start Size在0.01~0.05之间随机取值。将Start Color设为在蓝色和橙色之间随机选取。
我们希望电磁爆射是罕见的自发产生,所以将Rate over Time设为在0.4~0.8之间随机取值。
该形状就像薄饼,实际发射区域的中心有中空部分,此处应没有粒子生成。我们将Shape模块的Shape类型设为Sphere。Radius设为2.5,Radius Thickness设为0.8。
我们可以使用Noise模块来创建一些混乱的移动效果,将尾迹渲染出电磁爆射的感觉。我们将Strength设为在5~15之间随机取值,将Frequency设为2,Scroll Speed
此时,电磁爆射尾迹可能显得太长。我们可以使用Limit Velocity over Lifetime模块来减缓渲染尾迹的粒子。我们将Speed设为在0.2~0.8之间随机取值,Dampen设为0.5。
Part 16:镜头光晕(电磁爆射子系统)
这一部分是电磁爆射粒子系统的后续部分。我们首先创建一个新的粒子系统。
我们需要小型耀斑粒子配合电磁爆射效果,可以使用Sub Emitters模块来实现。点击粒子系统部分右侧圆圈旁边的+按钮,新粒子系统会作为当前系统的子部分创建,对其重命名。
下图中,我们将该粒子系统命名为“Lens Flare”。然后将Inherit模式设为Color。这样会将所有子系统的基本着色设为父粒子的颜色。
在新的子发射器粒子系统中,我们将Renderer模块的Material属性设为更柔和的附加点精灵。
接下来处理Main模块。这次不需要在新系统勾选Prewarm。可以保留Looping的勾选状态,因为粒子发射过程由父系统控制,禁用该选项不会产生任何效果。
我们将Start Lifetime设为在0.05~0.1之间随机取值。将Start Size设为在5~15之间随机取值。将Start Color设为在不同透明度的白色之间随机选取
我们希望每次电磁爆射只会发射一个耀斑,所以将Emission模块的Rate over Time设为0,点击+图标,添加新的Bursts部分。将Count值设为1。
最后,设置Color over Lifetime,使其快速浅入再缓慢淡出透明度。对Size over Lifetime的曲线进行设置,使粒子在生命周期中快速增大。
Part 17:组合所有效果
所有效果都已经完成,现在可以将各部分组合起来,添加到新的父粒子系统下,并禁用父粒子系统的所有模块。你可以将其用于播放整个效果,并同时缩放各部分。
大功告成,一个由粒子系统组成的绚丽的银河星系效果便呈现在我们眼前。
小结
最后,我们希望你喜欢这篇教程,并从中学习和掌握Unity Shuriken粒子系统的新知识。更多Unity教程,尽在Unity官方中文论坛(UnityChina.cn)