微信号:Unity-GreaterChina

介绍:Unity官方开发者平台,分享最前沿的技术文章和开发经验,精彩的Unity活动和社区相关信息.

在Unity中制作粒子特效

2018-02-28 12:08 Unity

粒子特效能够为游戏增添交互与响应能力,它们擅长创造许多运动和撞击效果。粒子特效可用于创建魔法火球,漩涡状的空间传送门,或者将玩家的注意力引导到一个发光的宝箱。炫酷的视觉效果往往引人入胜。

 

今天我们将为大家分享来自Synapse Games的技术美术David Finseth的教程文章,他将介绍使用Unity中制作粒子特效的流程和开发技巧。本文中所使用的案例来自《Spellstone》和《Animation Throwdown》。

  

粒子特效的创作流程


在创作粒子特效,遵循的流程为:分解需求-》设计概念草图-》开发实现概念设计-》测试效果

  

分解需求

在开始制作一个粒子特效时,首要的事情就是明确特效的需求。以下这些问题答案将被作为特效观感的限制与指导条件。你需要对这些问题的答案了然于心。


  • 特效需要多大范围?

  • 特效需要持续多久?

  • 特效应该如何触发?

  • 是否需要将特效分解为多个部分,以便可以通过代码进行控制?

  • 特效呈现的同时,是否还有其它可能会影响效果性能的操作在进行?

  • 特效是否会与屏幕上的其它事物相互作用?

 

设计概念草图

明确需求后,我们将对特效的整体外观进行概念设计。如果效果是动态的,可能会是类似故事板的形式。如果效果是静态的,比如一个环绕魔棒的光环,那通常一张简单的草图就可以了。

 

开发实现概念设计

大多数特效都是由多个组成部分互相层叠实现的。从大到小对特效的组成元素进行组合会比较顺手,如果目标是一个序列效果,则会按顺序从头做到尾。

 

测试效果

特效通常与游戏的技术性元素息息相关,因此在游戏过程中基于实际效果对其进行测试和修改非常重要。我们需要修改一个特果的时间、比例和节奏,以便获得最佳结果。

 

案例


现在让我们通过来自《Spellstone》和《Animation Throwdown》的示例,完整的了解上面所讲的流程。


《Animation Throwdown》中稀有卡片

《Animation Throwdown》中稀有卡片会发光,如下图所示。



分解需求

  • 需要与所有屏幕和弹出框的卡框互相影响

  • 不能破坏卡牌艺术效果或改变其状态

  • 采用稀有的颜色和符号

  • 随着稀有性的提高变得更加精致

 

设计概念草图


 

开发实现概念设计

 

粒子系统由多个不同组成部分层叠而成

 

测试效果

在测试这些发光效果时我们发现这个效果范围太大,影响到了其它的卡牌。最终我们简化了效果,使它恰好适应所有屏幕和弹出框。

 

《Spellstone》中的霜冻袭击

《Spellstone》中霜冻袭击中最终的冰霜光束特效,如下图所示。



分解需求

  • 龙的二个头都要能使用

  • 能与其它精灵互相影响

  • 这是袭击的高潮时刻,所以在触发时应该有显著的撞击效果

  • 可以持续任意长的时间,要看起来很酷

 

设计概念草图

粒子系统需要让玩家感觉到双头龙是个强劲的对手。我们希望冰霜之息是一道由冰雪组成的物理光束。为了增强龙在攻击城堡时的画面冲击力,可以尝试让这些粒子的不透明度依次递增,而不仅是一种气息感或透明的效果,


 

开发实现概念设计


多个组成层叠后创建了最终冰霜光束效果

 

在这里,我们使用一个2D光束纹理拉伸到整个屏幕,创建基础光束效果。然后添加粒子特效用于打断光束,产生一种定向流动的效果。


最上面是三角形的发射物。这样能产生冰柱从龙的嘴里射出的感觉。这个光束在末段通过粒子爆发来隐藏光束平面的边缘,同时也能显示出光束与城堡发生撞击的位置。

 

测试效果

这个特效在游戏中表现很好,没有对这个场景中其它动画产生不良影响。

 

技巧与窍门

准备好在Unity中制作你自己的粒子特效了吗?这里有一些有用的技巧,可以帮助我们的工作更加轻松。

 

Shape形状


对于2D特效而言,最有用的形状就是Box(盒状)、Circle(圆形)和Edge(边缘)。当使用盒形时,可以将Z设为0,从而消除深度。如果你想从某个中心点以放射状发射粒子时,圆形将是最佳选择。

 

我们可以主要使用Rotation(旋转)、Scale(比例)、Gravity(重力),以及Force over Lifetime(生命周期作用力)这些组件为2D效果添加运动。要让效果沿Y轴移动,重力是个很好的选择,而要在X轴上移动粒子,通常会使用生命周期作用力。

 

渲染模式:Stretched Billboard

在使用Stretched Billboard渲染模式时,如果你还设置了Speed Scale,可以让粒子沿一个轴向发散或收缩。你可以用这个创建一些相当有趣的效果,并利用到静态纹理的更多范围。


使用Stretched Billboard模式时,一个类似这样的简单圆形纹理可以成为爆炸线

 

在使用拉伸的粒子时,一个三角形纹理可以挤压拉伸以表示速度

 

Emission发射组件属性设置为Distance

将粒子的Emission发射组件属性设置为distance,可以让发射器在空间中位移时发射粒子。我经常将它应用在发射物上,如果你想让粒子沿着某条路径运动,也可以使用它。

注魔技能-使用distance粒子为卡牌描边


Texture Sheet Animation纹理列表动画组件

如果你想将精灵表动画与粒子特效混合,可以使用Texture Sheet Animation纹理层动画组件。我们可以使用这个组件来创建风格化的2D效果。

 

纹理列表动画可以随时间缩放创造出一个爆炸效果

 

应用于粒子系统的纹理

 

小结

在Unity中制作粒子特效就为大家介绍到这里,希望大家可以学以致用,在游戏中创作出精彩的粒子特效! 更多精彩文章尽在Unity官方技术论坛(Unitychina.cn)! 


P.S: Unity官方微信公众号留言现已正式恢复,欢迎大家把你的对文章的看法留言给我们!


推荐阅读

 


点击“阅读原文”访问Unity官方技术论坛

 
猜您喜欢 探究PHP底层运行机制 [译]微软发布Excel的3D数据可视化工具插件GeoFlow C语言宏定义#define的理解与资料整理 从基础概念到数学公式,这是一份520页的机器学习笔记(图文并茂) ❲追根究底❳理解 Linux 网络栈:Linux 网络协议栈简单总结