使用粒子实现Logo消融效果

本文将由游戏开发者Mirza分享使用Unity的默认Shuriken粒子系统,在不使用插件或编写脚本的情况下,实现Logo消融效果。
103329wvs04l4brkb240k4

这是一个Unity中运行的实时效果,你可以使用任意图片实现该效果,无论图片是否是彩色的。本教程将使用纯白色纹理来制作,根据该纹理调整设置,你可以改变部分粒子颜色,使其更符合自己使用的图片。

Part 1:Logo淡入淡出效果
我们首先处理粒子系统,实现整个Logo图片的淡入和淡出效果。

103330e146n95cwnl9w56e

创建一个新材质,将Logo贴图赋予此材质。将其设置为使用Particles/Alpha Blended着色器。

103330jh0flcwfww66w11h.png.thumb.jpg

我们需要确保纹理拥有读写权限。如果没有的话,基于纹理的粒子发射效果将只在编辑器中可用,无法在游戏中实现。

创建一个新的粒子系统。每次创建时,请重置Transform属性,这样游戏对象不会出现平移或旋转,除非打算使其以某种方式移动和旋转。

103330h5jb5vbuu6obqbv5.png.thumb.jpg

打开Renderer模块,并将粒子材质设置为刚刚创建的材质。如果想提高亮度,并且正使用着后期处理的泛光效果,我们可以将颜色调为纯白色,并将Alpha调到最大。

103331c4nnpn28mp004nxy.png.thumb.jpg

如下图对材质Tint Color进行的处理,将Render Alignment设为Local。我们不会让Logo的基础纹理粒子面向摄像机,这样能确保粒子面向本地变换的方向。

103331pgcrmcqbm4qe1ju1.png.thumb.jpg

我们只打算发射一个粒子,所以查看Emission模块并按照下图进行设置。

103331gavgmbt246xb5waw.png.thumb.jpg

现在我们可以进行Main模块设置。我们不需要循环播放该效果中的任何粒子系统,所以取消勾选Looping属性来禁用循环过程。

为了能通过脚本轻松地调整模拟时间,我们将Start Lifetime设为1。如果你不打算处理该数值,应该将它设为更合适的值。你可以将其设为较大数值,使观看者有足够时间看到Logo,再让Logo爆炸为精美的粒子。

如果我们不使用正方形纹理,则可能需要启用3D Start Size并处理参数。我们发射的是2D粒子,所以只要处理X和Y值。图像分辨率为1024*512,宽高比为2:1,所以将X值设为2,Y值设为1,使它匹配宽高比,避免使图片变形。

我们还降低了Start Color的Alpha值,因为使用后期处理设置的泛光效果时,图像的亮度会过高。

103332ghyp7baimhgwxhyw.png.thumb.jpg

现在,我们需要使用Color over Lifetime模块来设置Alpha动画。下图是处理Logo淡入和淡出效果的设置。

Alpha淡入时间为总时间的25%,从25%~75%的时间显示Logo,然后再完全淡出。因为我们将该粒子持续时间设为1,所以分别设定的时间为0.25和0.75。

103332to4en7bhoetb8ttj.png.thumb.jpg

Part 2:Logo爆裂效果
在这一部分,我们将使用的粒子系统制作Logo分散的爆裂效果。

103332d6k0y1ac00jscsas

首先创建新粒子系统。我们有三种方法可以选择:
1、为点精灵图片创建简单的粒子纹理,将其指定给附加材质。
2、使用Ultimate VFX资源的点材质。
3、使用Inferno VFX中的附加发光球体材质。

这三种方法均可用于本文教程,Ultimate VFX 和Inferno VFX都是由本文作者Mirza所创作,如果你不想自己制作纹理和材质,也不打算付费购买资源,可以下载免费的Inferno VFX。

打开新建粒子系统的Renderer模块并设置材质,不必修改其它设置。

104359saahoshlsja4s1ja.png.thumb.jpg

请按照下面的内容设置Main模块和Emission模块。

Start Delay会按指定时间推迟发射过程,以秒为单位。我们希望该效果在Logo淡出时发生,也就是从前面粒子系统的透明动画开始,即整个过程的第0.75秒。

这些粒子会很小,因此我们将Start Size设为单位大小的1/8,即0.125。粒子不用太亮,所以需要大幅降低Start Colour的Alpha值。

因为会有大量微小粒子,我们需要将Max Particles设为10,000,并将Emission模块中Bursts属性的Count数值也设为10,000。

104359mbwamhwohizoewao.png.thumb.jpg

现在让这些粒子从Logo纹理的形状发射出来,请按下面内容设置。

将Shape设为Box,指定Logo图片到Texture字段。如果想让粒子继承Logo的颜色,请勾选Color affects Particles。

类似之前的粒子系统Start Size设置,我们调整了发射器边界,通过设置Scale为[2, 1, 0],使其匹配图片的宽高比。Z值为0,因为希望让发射器在平面上发射。

104359sspbqidx50dddffi.png.thumb.jpg

此时,当粒子在Start Delay后发射时,我们会看到类似下图的效果。现在有了在纹理形状发射的基础,我们可以实现任何想要的效果。

104400eawdd37zwnn7ndna.png.thumb.jpg

104402itdtwtkbhhbwq91b.png.thumb.jpg

现在处理分散的文字。启用Velocity over Lifetime模块。

点击该属性最右侧箭头设置Linear属性,选择Random Between Two Curves。指定相似曲线到所有轴,范围从-1~1。曲线会随时间慢慢增强分散效果,而不是立即分散,因此它能更好地融合前面的粒子系统,并提供过渡转变为噪声分散粒子系统。

为方便起见,这里使用了Speed Modifer来调整数值,但是为每个轴直接设置数值会更好,这样粒子系统可以自动剔除。本示例是一个Logo动画效果,所以这样处理意义不大。

104403jzkhp4cc4pa777cq.png.thumb.jpg

最后,按下图启用并编辑Color over Lifetime模块和Size over Lifetime模块。

104403wmhhddiowr4hqlmc.png.thumb.jpg

Part 3:Logo噪声分散效果
接下来,我们将会制作第一个噪声分散效果,如下图所示。该效果需要一个新的粒子系统,我们可以将刚制作好的粒子系统复制过来,因为许多设置是相同的。

104404kj4l4ll4jnmas4nl

我们需要修改部分设置,在Main模块和Emission模块中有一些区别。

Start Delay和Start Lifetime的数值会在1到2秒之间随机选取,Start Size较小,Max Particles设为20000,Burst中的Count值也设为20000。为了随机选取Start Lifetime数值,点击下拉箭头,选择Random Between Two Constants。

104405w7z7puhszzs2s5p6.png.thumb.jpg

Color over Lifetime模块也有不同。

104405otxstp16osyy1oel.png.thumb.jpg

引入噪声后,就变得有趣了,现在启用Noise模块,按下面内容进行设置。

我们将Strength改为使用曲线,这样粒子不会立即以噪声方式分散,从而更好地与其它效果融合。右键点击曲线的控制点,选择Edit Key… 来直接控制并编辑点在视图上的位置,使用Broken切线模式允许你修改左边或右边的切线,而不改变另一侧的曲线。

通过使用这二个方法,我们将控制点设在0.25s,该点左边为直线,右边为曲线。得到的结果是0.25s前不使用噪声,之后会突然上升为1。

频率为1.5时效果看起来不错,它能控制“混乱”等级,因为粒子由渐变场操控。Scroll Speed设为1会使噪声在粒子生命周期生成动画。

我们使用了大量粒子,如果将Quality设为Medium (2D)会加速模拟效果,且不会与最终效果有太大区别。

105201vzqrpjii14rjpieo.png.thumb.jpg

我们将Render Mode改为Stretched Billboard,设置Speed Scale为0.1,Length Scale设为1,这样会稍微根据当前的移动速度和方向拉伸粒子,产生近似运动模糊的效果。

105201icuf4mzymmun5e5z.png.thumb.jpg

其它设置可以保留原样,因为我们重用了之前粒子系统的设置。

Part 4:Logo噪声分散2
复制我们刚刚制作的粒子系统,开始制作最后一个粒子系统,它或许是该效果中最精美的部分。

105207o0fmm0wxru29u0wu

我们需要修改Main模块和Emission模块中的部分设置。

Duration设为0.75。这是因为这里不会在一次爆炸中发射粒子,而是会使用Rate over Time。我们还修改了Start Delay和Start Lifetime数值,并提高了Start Color的Alpha值。

105208hizi1ij12mpjbojo.png.thumb.jpg

按下图设置Color over Lifetime模块和Size over Lifetime模块。让粒子从蓝色变为桔红色,每个粒子的大小会快速增大然后缓慢减小。

105208v9dnpcbbujbjpp1c.png.thumb.jpg

最后,修改Noise模块的设置,将Strength和Frequency设为1。你可以将Quality改为Medium (2D)。

105209phh6t99ip3dn998z.png.thumb.jpg

Part 5:组合所有效果
到这里就差不多完成了,让我们重新看一遍已经制作做好的独立粒子系统,然后将所有效果结合成一个可播放对象。

我们可以将这些粒子系统命名并分组为另一个粒子系统,将所有模块禁用,这样它们会在你选择其中任一对象时一起播放。如果禁用Looping并设置Stop Action为Destroy,可以将其用作可实例化效果,它会在Duration时间(以秒为单位)结束后自毁。

105210n2ov2j0n86m41o7i.png.thumb.jpg

本文到此结束,结合所有粒子系统后,精美Logo消融效果就制作完成了,最后的效果如下图所示。