/【半周谈】058 基础游戏动效元素-4-粒子

【半周谈】058 基础游戏动效元素-4-粒子




在各种动效(动画)制作工具中,粒子系统都是一个不可或缺的功能模块,而且它们的功能设置都极其相似。








在常用的动效设计软件,如AE和Unity中,由于功能结构、属性数值设置都非常类似,所以粒子的设计方法也极为相似。








通常来说,游戏界面动效中出现的粒子形态主要有“炸”、“飘”和“流”三种。其中“炸”通常用来辅助一些爆炸效果的外围碎片飘散效果;“飘”则大部分应用于场景氛围烘托;“流”则是最不像粒子的粒子,可以认为是“飘”的变种形态,通常用在特殊形态纹理效果上。








如下图所示的《WonderBox》中的经验提升界面动效里,就出现了粒子“炸”的形态,不过,与经典的中心炸开不同,这是一个类似彩带的由下往上喷发的粒子形态。








下图所示的《有杀气童话2》弹窗里,则是一种“飘”形态的粒子。这里的粒子还使用了序列帧动画的单个粒子效果。这里的粒子就起到了场景氛围烘托的作用。



下图《斗罗大陆魂师对决》的“斗罗之路”界面里,关卡图标掉落后的光效中,有少许粒子,可以认为是一种“流”形态,它们和图标落下时的流光拖尾一起,组成了整个动画掉落时的完整动作节奏。



下图《机动都市阿尔法》里的恭喜获得弹窗中,在标题处使用了多个粒子,有些是“炸”形态,有些是“飘”形态,它们分别起到了打开与持续阶段,动效中的动作节奏烘托作用。




类似的,在下图《月神的迷宫》的获得类弹窗中,可以看到更明显的“炸”形态粒子与后续“飘”形态的粒子,其中碎玻璃效果也显然是一种序列帧粒子。









基于前文所说的,由于诸多软件中粒子有着类似的特性,所以在动效设计过程中,我们可以几乎完全依托设计软件设计出最终进版的粒子的形态设计








在AE中,目前最好用的粒子插件是RG Trapcode套装中的Partical。其属性设置极为详细,几乎可以定制任意想要的类型效果。缺点是渲染卡顿,预览效果时效率较低。但如果使用熟练,可以在设计之初大致预估各项数值,从而缩短设计时间。下图所示为其设置面板局部:








所有的粒子工具都会展示出非常繁多的属性设置面板,但总体上粒子的设置离不开几个关键的属性设置。








一是粒子的发射器形态,可以设置为点、球面、方块等等。也可以基于某个图层的外形和颜色;一是粒子本身的形态,可以是默认的点、块等,也可以设置为某个图形元素。在引擎中可以是序列帧的形式;一是粒子的发射形态,这受到很多因素影响,诸如初始速度、随时间的速度变化,以及物理环境设置,包括重力、空气密度、风向、扰动等等;除此之外,还可以设置粒子的生命周期内的透明度变化,大小变化甚至是颜色变化等等。









基于这些基本的属性设置,可以设计出千变万化的粒子效果。在引擎中也是类似,只是个别属性设置上有所差别。








在Unity中则有多种类型的粒子功能模块,甚至有些情况下,因为性能优化等方面原因,项目组会自己定制属于自己的粒子功能模块。常用的是Unity自带的粒子功能ParticalSystem,或者插件UI Partical(



https://github.com/mob-sakai/ParticleEffectForUGUI#usage



)等,它们的属性设置与上文提到的RG插件极为类似,只在个别属性设置上不尽相同。从这个层面上讲,粒子功能其实是触类旁通的。








比如在unity 2021版本中,我们可以在以下选项中找到默认的粒子功能:







建立这样一个粒子后,用如下图所示的数值对各项属性进行设置后,可以得到一个类似火星飘动的粒子效果:







UI Partical也比较类似,在上文提到的链接中下载后于插件管理器中安装:



并在以下菜单中找到:



总体上项目中选择使用哪种工具,要看具体的性能优化指标以及面临的技术成本。但是在设计的角度上看,几个工具相差不大,



Unity中的粒子属性设置与AE非常相似,但也有所不同,下边这些内容可





以作为使用时的参考:


















主面板ParticleSystem:









-Duration:粒子发射周期,如图的意思就是在发射3.32秒以后进入下一个粒子发射周期。如果没有勾选looping的话,3.32秒之后粒子会停止发射。



-Looping:粒子按照周期循环发射。



-Prewarm:预热系统,比如说我有一个空间大小的粒子系统,但是粒子发射速度有限,我想在最开始的时候让粒子充满空间,此时就应该勾选Prewarm。



-StartDelay:粒子延时发射,勾选后,延长一段时间才开始发射。



-StartLifeTime:粒子从发生到消失的时间长短。



-StartSpeed:粒子初始发生时候的速度。



-3DStartSize:这个属性是当你需要把粒子在某一个方向上扩大的时候使用。



-StartSize:粒子初始的大小。



-3DStartRotation:需要在一个方向旋转了子的时候可以使用。



-StartRotation:粒子初始旋转。



-RandomizeRotation:随机旋转粒子方向,感觉在3D粒子的情况下,尤其是圆形的没什么用。



-StartColor:粒子初始颜色,可以调整加上渐变色。



-GravityModifier:重力修正。



-SimulationSpace:a.Local,此时粒子会跟随父级物体移动。b.World,此时粒子不会跟随父级移动。c.Custom,粒子会跟着指定的物体移动。



-SimulationSpeed:根据Update模拟的速度。



-DeltaTime:一版的DeltaTime都是1,如果需要用到Sacled是在游戏需要暂停的时候,根据TimeManager来定。如果选择UnScale的话,就会忽略时间的影响。



-ScalingMode:Local:粒子系统的缩放和自己Transform的一样会忽略父级的缩放。Hierarchy:粒子缩放跟随父级。Shape:将粒子系统跟随初始位置,但是不会影响粒子系统的大小。



-EmitterVelocity:



-MaxParticles:粒子系统可以同时存在的最大粒子数量。如果粒子书数量超过最大值粒子系统会销毁一部分粒子。



-AutonRandomSeed:随机种子,如果勾选会生成完全不同不重复的粒子效果,如果勾选即为可重复。








Emission模块




RateOverTime:随单位时间生成粒子的数量。



RateOverDistance:随着移动距离产生的粒子数量。只有当粒子系统移动时,才发射粒子。



Bursts:



Time:从第几秒开始。



Min:最小粒子数量。



Max:最大的粒子数量,粒子的数量会在Min和Max之间随机。



Cycles:在一个周期中循环的次数。



Interval:两次两次Cycles的间隔时间。








Trailer模块




如果使用Trails模块的话,必须在Renderer中给TrailMaterial赋值。



-Ratio:分配给某个粒子拖尾的几率。



-Lifetime:拖尾存在的时间。



-MinimumVertexDistance:定义粒子在其Trail接收到新顶点之前必须行进的距离。接受新顶点以为重新定位Trail。



-TextureMode:



-WorldSpace:如果选用,即使应用LocalSimulationSpace,Trail顶点也不会随着粒子系统的物体移动。并且,Trail会进入世界坐标系,并且忽略任何粒子系统的移动。



-DieWithParticle:Trail跟随粒子系统销毁。



-SizeAffectsWidth:如果勾选的话,Trail的宽度会乘粒子系统的尺寸。



-SizeAffectsLifetime:Trail的Lifetime乘以粒子系统的尺寸。



-InheritParticleColor:Trail的颜色会根据粒子的颜色调整。



-ColorOverTrail:用于控制Trail在曲线上的颜色。



-WidthOverTrail:用于控制Trail在曲线上的宽度。



 



TextureSheetAnimation模块




 



Mode:



Grid:用网格来实现。



Sprite:通过相同尺寸的Sprite实现粒子动画。



Tiles:网格的行列数。



Animation:



WholeSheet:动画作用于整个表格。



SingleRow:动画只用于单独一行。有一个随机的选项可以选择或者是选择单独的一行来做动画。



FrameOverTime:根据时间来播放帧,横坐标是1s,纵坐标是帧数。



StartFrame:开始的帧是哪一帧。



Cycles:在1秒之内循环播放的次数。



FlipU:翻转U。



FlipV:翻转V。



EnabledUVChannels:








Renderer模块



RenderMode:



Billboard:粒子总是面对相机。



StretchedBillboard:伸展板,可以根据相机,速度,长度来调节粒子的缩放。



HorizontalBillboard:粒子平面平行于Floor平面。



VerticalBillboard:粒子平面平行于世界坐标的Y轴,但是面向相机。



Mesh:将粒子渲染到网格上去。



TrailMaterial:需要使用拖尾效果的时候,才附材质。



Material:用于渲染粒子的材质。



SortMode:



ByDistance:根据粒子离相机的距离渲染。



OldestInFront:先渲染出来的在最上层。



YoungestInFront:后渲染出来的在最上层。



SortingFudge:排序容差,仅影响整个系统在场景中出现的位置。Sorting值越小,就越容易粒子系统在其它透明的GameObjects上绘制的机会。



Pivot:修改粒子渲染的轴点。



VisualizePivot:可视化轴点。



Masking:



CustomVertexStreams:在材质的顶点着色器中配置哪些粒子属性可用。



CastShadows:使用阴影。



ReceiveShadows:规定阴影是否可以投射到粒子上,只有Opaque(不透明)的材质可以接受阴影。



以上就是本期文章的全部内容,有问题请留言或者加群咨询。


















 欢迎点击下方名片关注本号 



推荐阅读

本文来自微信公众号“COTA五号”作者:欧型兔(ID:cotadesign)。大作社经授权转载,该文观点仅代表作者本人,大作社平台仅提供信息存储空间服务。