《Unity 4 3D开发实战详解》一6.3 粒子系统

简介: 在第一人称射击游戏中,我们会看到很多爆炸、浪花、血液喷溅等绚丽的特效。这些特效如果通过编程实现,将是一件很烦琐复杂的工作。为了简化这一过程,Unity为开发者集成了粒子系统这一仿真工具,使粒子特效的开发变得更简单。

本节书摘来异步社区《Unity 4 3D开发实战详解》一书中的第6章,第6.1节,作者: 吴亚峰 , 杜化美 , 张月霞 , 索依娜 责编: 张涛,更多章节内容可以访问云栖社区“异步社区”公众号查看。

6.3 粒子系统

Unity 4 3D开发实战详解
在第一人称射击游戏中,我们会看到很多爆炸、浪花、血液喷溅等绚丽的特效。这些特效如果通过编程实现,将是一件很烦琐复杂的工作。为了简化这一过程,Unity为开发者集成了粒子系统这一仿真工具,使粒子特效的开发变得更简单。

粒子系统不是一个简单的静态系统,在系统中粒子会随着时间的推移不仅不断变形和运动,而且系统会自动产生新的粒子,销毁旧的粒子。这就能表现出和雨、雪、雾、水波、火焰、焰火、烟尘、流星等现象极其相似的效果,极大地提高游戏的可观赏性。

6.3.1 粒子系统的简介

粒子系统在Unity开发平台下可以很方便地引入,很多绚丽的特效都可以通过几步简单的操作制造出来。在本部分将介绍一下粒子系统的具体创建和应用的操作步骤。


6_54

1.基础粒子系统
在菜单栏单击GameObject选项,此时会弹出“游戏对象操作”菜单,选择“CreateOther”选项,则弹出“创建”菜单,接着选择“Particle System”选项。即完成粒子系统的创建,如图6-54所示。

2.组件粒子系统
粒子系统不仅是作为一种游戏对象存在于Unity中的,它还可以作为一种组件(Component)依附在其他的游戏对象的。想象一下燃烧的木头,这就是通过在木头对象上依附了一个火焰粒子系统实现的。下面讲解一下粒子系统作为组件的创建方法。

(1) 在菜单栏中单击“GameObject”选项,弹出对象创建菜单,在此菜单中选择“CreateOther”,则会弹出“创建其他”菜单,在菜单中选择“Cube”,创建出一个立方体对象,如图6-55所示。

(2)选中Cube对象,在菜单栏中单击“Component”选项,弹出组件添加菜单,在此菜单中选择Effects,则会弹出效果添加菜单,在菜单中选择“Particle System”。这时就成功地为Cube添加了一个粒子系统组件,如图6-56所示。

Stnd001说明

本案例的场景文件位于随书光盘中源代码/第6章目录下的 PhysicsEngine/Assets/ scene/ CubeParticle。

6_55_56

6.3.2 粒子系统的特性

粒子系统是一个相对较为复杂的游戏对象。一般来说,粒子系统包含的组件有粒子系统主体(ParticleSystem)、喷射(Emission)、形态(Shape)、渲染器(Render)。接下来对其进行详细的介绍。

(1)粒子系统主体。

单击选中粒子系统对象,会发现粒子系统开始动了起来,在属性查看器面板中呈现出的是粒子系统的属性设置器,在粒子系统的第1部分是ParticleSystem。在这一部分中,定义了粒子系统的大部分属性值。该组件在属性查看器中的位置如图6-57所示。

在这一组件中,包含的属性以及含义如表6-3所示。


b6_3


6_57

(2)喷射(Emission)。

喷射中包含两个主要属性,定义了粒子系统的喷射特性,如图6-58所示。

频率(Rate)属性定义了喷射的频率,可以是以时间为标准定义每秒喷射的次数,也可以以距离为标准,定义每单位长度喷射的粒子个数,Rate的第1个参数是喷射次数,第2个参数是喷射基准,可选项为时间(Time)和距离(Distance)。

爆发(Bursts)定义了在某个特定时间喷射一定数量的粒子,这样可以轻松实现爆炸效果。单击该属性右下角的加号可以添加一个预设,第1列Time的数据为喷射的时刻,第2列Particles为瞬间喷射的粒子数目。

说明

Bursts只有在以时间为基准的喷射中才有效。

(3)形态(Shape)。

形态定义了粒子系统的喷射形态,如图6-59所示。粒子系统的形状既可以是系统自带的球体状、立方体状或者半球,也可以有开发者自行指定。这样给予了开发者很大的灵活性。


6_58_59

形态属性定义了粒子可以被喷射的范围。可选项有球体(Sphere)、半球体(HemiSphere)、圆锥体(Cone)、盒子(Box)和网格(Mesh)。前4个选项可以直接通过单击“Shape”后的属性下拉列表选定,网格(Mesh)选项被单击后会弹出网格选择对话框。选择一个合适的Mesh作为限制范围。相关的属性含义如表6-4所示。


b6_4

(4)渲染器(Renderer)。

这一组件中的属性定义了粒子系统中粒子的渲染特性。本组件位于粒子系统修改器的最底端,如图6-60所示。修改这些属性可以更加灵活地使用粒子系统。


6_60

渲染器的相关参数直接影响了单个粒子的显示效果,这些参数的具体含义如表6-5所示。


b6_5

说明

在粒子系统编辑器的最下端还有两个选项,第1个选项Resimulate表示立即将当前的修改保存到仿真系统中并重新模拟。第2个选项WireFrame表示是否显示粒子系统的线框。

6.3.3 粒子系统的组合使用

粒子系统不仅可以单独用来模拟风、霜、雨、雪等单纯的自然景观,也可以进行组合以后实现某些特殊模型的搭建,如火炬特效。火炬特效是实物模型和粒子系统组合实现的,下面通过介绍火炬的实现,重点讲解粒子系统与其他模型的组合使用方式。

(1)首先在3dMax中,将火炬柄模型导出为FBX格式文件放置在某一位置。

(2)导入模型文件,在Unity的资源列表中,鼠标右键单击空白位置,弹出资源操作菜单,选择Import New Assest…,如图6-61所示。在弹出的资源选择对话框中选择刚刚导出的FBX文件。单击Import按钮,即可成功导入模型文件,如图6-62所示。

(3)导入模型文件成功以后,会在资源列表中出现所需的资源,如图6-63所示,将此模型资源左键拖曳至游戏组成对象列表中,调整火炬的位置使其在摄像机的视野之内。并将任意纹理图拖曳到该对象上,为其指定纹理图,如图6-64所示。


6_61_62
6_64_63

(4)按照顺序GameObject→CreateOther→Sphere进行操作,新建一个球体,如图6-40所示。

(5)选中球体,按照顺序Component→Effects→Particle System进行操作,为球体添加一个粒子系统,如图6-65所示。


image

(6)调节球体对象的位置,使其与火炬模型上端部分,具体的相对位置如图6-66所示,接下来缩小球体并将其放置在火炬的内部,使其不可见。

(7)选中球对象,在其粒子系统的Shape组件下,Shape的属性值为“Cone”,并调整球体的旋转状态,使粒子的喷射方向为竖直向上。这样保证了火焰是在燃料喷射方向上进行活动的,这符合日常生活中的火焰形态,如图6-67所示。

(8)在Sphere组件中,设置Duration值为5.0,looping为选中态。startLifeTime为1.5。startsize为1,startSpeed为2,StartColor为红色。MaxParticle值为1000,其他的属性保持默认即可,如图6-68所示。

(9)在Emission组件中设置喷射是按照时间为基准,即Rate的第2个参数为Time,第1个参数为200,Bursts没有任何设置,如图6-69所示。

(10)在Shape中设置Angle为10,Radius为0.01。其他的属性保持默认即可,如图6-70所示。

(11)在Renderer组件中,设置渲染模式(RnenderMode)为Mesh,在下面的Mesh属性选择Cube。其他的保持默认即可,如图6-71所示。

(12)接下来在游戏组成列表中进行设置,将Sphere左键拖动到火炬柄模型上(huoju),此时粒子系统就作为火炬柄的子对象绑定在了火炬柄上。这样粒子系统就会随着火炬柄的移动而移动。经过以上设置,即可达到火炬效果,如图6-72所示。

image

image

image

image

image

image

说明

本案例的场景文件位于随书光盘中源代码/第6章目录下的 PhysicsEngine/Assets/ scene/particleSystem。读者可以举一反三,将此种方案加以推广,甚至可以将多个粒子系统加以组合达到更加细致精确的效果

相关文章
|
2月前
|
图形学 开发者 UED
Unity游戏开发必备技巧:深度解析事件系统运用之道,从生命周期回调到自定义事件,打造高效逻辑与流畅交互的全方位指南
【8月更文挑战第31天】在游戏开发中,事件系统是连接游戏逻辑与用户交互的关键。Unity提供了多种机制处理事件,如MonoBehaviour生命周期回调、事件系统组件及自定义事件。本文介绍如何有效利用这些机制,包括创建自定义事件和使用Unity内置事件系统提升游戏体验。通过合理安排代码执行时机,如在Awake、Start等方法中初始化组件,以及使用委托和事件处理复杂逻辑,可以使游戏更加高效且逻辑清晰。掌握这些技巧有助于开发者更好地应对游戏开发挑战。
120 0
|
3月前
|
图形学 C# 开发者
Unity粒子系统全解析:从基础设置到高级编程技巧,教你轻松玩转绚丽多彩的视觉特效,打造震撼游戏画面的终极指南
【8月更文挑战第31天】粒子系统是Unity引擎的强大功能,可创建动态视觉效果,如火焰、爆炸等。本文介绍如何在Unity中使用粒子系统,并提供示例代码。首先创建粒子系统,然后调整Emission、Shape、Color over Lifetime等模块参数,实现所需效果。此外,还可通过C#脚本实现更复杂的粒子效果,增强游戏视觉冲击力和沉浸感。
176 0
|
3月前
|
开发者 图形学 前端开发
绝招放送:彻底解锁Unity UI系统奥秘,五大步骤教你如何缔造令人惊叹的沉浸式游戏体验,从Canvas到动画,一步一个脚印走向大师级UI设计
【8月更文挑战第31天】随着游戏开发技术的进步,UI成为提升游戏体验的关键。本文探讨如何利用Unity的UI系统创建美观且功能丰富的界面,包括Canvas、UI元素及Event System的使用,并通过具体示例代码展示按钮点击事件及淡入淡出动画的实现过程,助力开发者打造沉浸式的游戏体验。
95 0
|
3月前
|
图形学
Unity动画☀️Unity动画系统Bug集合
Unity动画☀️Unity动画系统Bug集合
|
5月前
|
存储 JSON 关系型数据库
【unity实战】制作unity数据保存和加载系统——大型游戏存储的最优解
【unity实战】制作unity数据保存和加载系统——大型游戏存储的最优解
159 2
|
5月前
|
图形学
【unity实战】Unity中基于瓦片的网格库存系统——类似《逃离塔科夫》的库存系统(下)
【unity实战】Unity中基于瓦片的网格库存系统——类似《逃离塔科夫》的库存系统
81 0
|
5月前
|
图形学 容器
【unity实战】Unity中基于瓦片的网格库存系统——类似《逃离塔科夫》的库存系统(上)
【unity实战】Unity中基于瓦片的网格库存系统——类似《逃离塔科夫》的库存系统
80 0
|
5月前
|
图形学
【unity小技巧】Unity中实现一个战斗连击连招系统,可以动态添加减少连击连招段数功能
【unity小技巧】Unity中实现一个战斗连击连招系统,可以动态添加减少连击连招段数功能
117 0
|
5月前
|
存储 JSON 图形学
【unity实战】制作unity数据保存和加载系统——小型游戏存储的最优解
【unity实战】制作unity数据保存和加载系统——小型游戏存储的最优解
184 0
|
5月前
|
存储 图形学
【unity小技巧】unity事件系统创建通用的对象交互的功能
【unity小技巧】unity事件系统创建通用的对象交互的功能
54 0