谢韬(四川大学计算机学院,成都 610065)
基于Unity3D粒子系统的游戏特效实现
谢韬
(四川大学计算机学院,成都610065)
近年来,随着科技的不断进步,游戏的场景以及特效的制作越来越接近现实,如在现实生活中常见的阳光、雨雪、云雾等天气因素,火山爆发、地震、海啸等自然现象以及在战争类中子弹的飞行轨迹和震撼的爆炸,等等,这些元素均已加入到虚拟的世界之中,而这些元素的加入不仅可以美化游戏界面加强游戏的观赏性同时还可以使得游戏玩家们在虚拟的世界中体验到现实世界中很难经历的一些景象。为了在游戏中实现这些效果,目前较好的解决办法便是使用粒子系统。通过Unity3D引擎制作了一个射击类的游戏,本文侧重阐述通过该引擎的粒子系统实现游戏中子弹击中物体后的爆炸特效。
粒子系统是由W.T.Reeves提出的用来模拟不规则自然景物生成和动画的技术,也是目前为止用来模拟不规则模糊物体中较成功的图形生成算法。相比于其他的算法如L系统、分形法构图等,粒子系统无论是在图像质量上还是运算代价上面都是比较高的。所以,目前粒子系统已经广泛的应用于各大3D软件、游戏引擎之中。粒子系统在总体上会有相同的表现规律,但是对于单独的个体却会随机表现出不同的特征,所以粒子系统的分类是多种多样的。本文通过粒子的形态将其分为流体粒子、破碎粒子、烟雾粒子等几类。流体粒子主要用来模拟水的波纹,弹道的飞行轨迹效果,破碎粒子主要用来模拟物体爆炸产生的效果,烟雾粒子主要用来模拟场景的天气以及景物之类。粒子系统中每个粒子都会拥有一个初始的值,如初始化坐标、初始化速度、初始化粒子大小、当前的角度、后续偏转角度等等,要完成一个基于粒子系统的特效制作,首先需要确定所要实现的是什么效果,然后根据所需做的东西来确定该粒子系统模型。
Unity3D中的粒子系统由Ellipsoid Particle Emitter(椭圆粒子发射器)、Particle Animator(粒子动画器)、Particle Renderer(粒子渲染器)三个部分所组成。椭圆粒子发射器是unity用来生成粒子的组件,该模块定义了粒子随机的或者固定的大小、速度、颜色、生命周期、发射角度等等属性来模拟所需要产生的粒子效果,椭圆粒子发射器的坐标便是粒子初始化的坐标。粒子动画器是将粒子发射器产生的粒子进行二次加工,例如说随着时间增加粒子的发射速度,改变粒子的旋转角度,将其颜色不断变化,粒子的放大或者缩小均需要用到该组件。粒子渲染器在的主要工作是将粒子效果渲染到游戏中,将粒子产生的效果直接显示在输出设备上,让用户直观的看到效果,并且这个组件还可以决定粒子的材质、光影。
要制作子弹击中后的爆炸效果,首先将从3DMax软件中制作出的子弹模型导入Unity3D中,将该模型制作成prefabs,这样就可以通过调用Instantiate函数多次使用该模型。然后对子弹模型增加Rigidbody(刚体)组件,这个组件是给子弹加了一个重力效果并使得其具有物理体积能与其他物体发生碰撞。
通过鼠标来控制子弹的发射,其核心代码如下:
该代码脚本绑定在主摄像头上,为了保证发射的子弹出现的坐标在鼠标指针处,先将坐标系统进行转化,由世界坐标转为屏幕坐标,调用Input类下的Get-Button方法来响应鼠标事件,再通过Instantiate函数在鼠标位置生成子弹模型,给其赋予一个向前方向的力。
子弹发出后与物体触碰,为子弹添加刚体组件时就给它默认添加了碰撞检测器,但是这个仅仅代表有碰撞的体积,为了实现碰撞后产生爆炸的效果,需要为其添加一个碰撞检测脚本。碰撞检测代码如下:
该脚本代码绑定在子弹模型上,当子弹发射击中物体后,由OnCollisionEnter函数来判断是否相触碰,如果触碰就调用Destroy函数删除子弹模型,再调用Instantiate函数在当前位置生成一个名为baozha的粒子效果。
要制作爆炸的粒子效果,首先根据现实中爆炸的效果来确定游戏中粒子的模型。爆炸简单的来说就是从一个点扩散到一个球面,并附带火焰。由上,在Unity3D中建立一个名为baozha的粒子系统,从上面对Unity3D粒子系统的解释中可以知道其包含三个组件,即椭圆粒子发射器、粒子动画器、粒子渲染器,在每个组件中为其设定所需的参数。因为爆炸是短暂的一个效果,所以需要为其写一个消亡的脚本,最后给该粒子效果添加音频组件。
粒子系统界面(如图1)。
消亡代码:
直接绑定在名为baozha的粒子系统上,该粒子效果出现一秒后执行删除操作。
实际效果(如图2)。
粒子系统越来越趋近于成熟化,在游戏引擎的设计开发中,粒子系统已经开始成为游戏特效实现和场景模拟中至关重要的一部分。目前除了游戏这一块以外,粒子系统还广泛的应用于其他行业,如电影制作等等。本文介绍了游戏中爆炸特效的制作,在制作可以应用于射击类游戏中,在后期将会添加子弹的飞行轨迹特效、敌人AI、计分,等等。
图1
图2
[1]宣雨松.Unity3D游戏开发[M].北京:人民邮电出版社,2012.6.
[2]孙家广,胡事民.计算机图形学基础教程[M].北京:清华大学出版社,2005.7.
[3]周爱民.JavaScript语言精髓与编程实践[M].北京:电子工业出版社,2008.
Unity3D;Particle Systems;Game Effects
Particle System Based Unity3D Game Effects
XIE Tao
(College of Computer Science,Sichuan University,Chengdu 610065)
1007-1423(2015)24-0030-03
10.3969/j.issn.1007-1423.2015.24.008
谢韬(1991-),男,湖南娄底人,在读硕士研究生,研究方向为图形图像
2015-06-30
2015-08-10
近年来,人们对电子游戏的娱乐性需求越来越高,追求更加真实的效果也成为电子游戏发展的大方向,无论是手游还是PC游戏都广泛用到粒子系统来实现游戏特效和场景模拟。从分析粒子系统的基础上,通过使用Unity3D引擎上的粒子系统,由理论到实际代码的编写来实现游戏中子弹击中物体后的爆炸效果。
Unity3D;粒子系统;游戏特效
In recent years,people demand entertainment video games become more sophisticated,the pursuit of a more realistic effect has become the general direction of development of video games,both the mobile games and PC games are widely used in the particle system to achieve gaming effects.Based on the analysis from the particle system,by using a particle system on Unity3D engine,from theory to write the actual code of the game to achieve the explosion of the bullet bomb.