1. 粒子系统的定义
粒子系统最早出现在20世纪80年代,主要用于解决由大量按一定规则运动(变化)的微小物质在计算机上的生成和显示问题。它的应用非常广泛,大的可以模拟原子弹爆炸、星云变化,小的可以模拟水波、火焰、烟火、云雾等,而这些自然现象用常规的图形算法是很难逼真再现的。粒子运动的变化规则可以很简单也可以很复杂,这取决所模拟的对象。
2. 创建粒子系统
在unity中创建粒子系统有三种方式:
- 在Hierarchy层级视图上方单击Create>Paticle System(创建>粒子系统),可以看到场景视图中出现了一个粒子系统。
- 在菜单栏中依次单击Gameobject>Particle System(游戏对象>粒子系统),同样也可以创建一个粒子系统。
- 直接在Hierarchy(层级视图)中的空白处右击Particle System(粒子系统)。
(使用这三种方式创建的粒子系统完全相同)
3. 粒子系统的播放控制
在层级视图中选择之前创建的Particle System(粒子系统),可以发现在Scene场景视图中右下角多了一个控制窗口,如图3-1所示。
- Pause(暂停):暂停播放
- Stop(停止):停止播放
- Playback Speed(播放速度):设置播放速度倍率
- Playback Time(播放时间):设置播放时间,从粒子系统开始播放到当前时间
- Particles (粒子数量):显示粒子数量
4. 粒子系统的数值控制
Unity默认的粒子系统有四种数字修改类型,可以通过单击数值后面的三角符号进行切换。以start size为例,如图4-1所示。
- Constant(常量)
可以把它理解为一个固定值,这个值不会随着粒子寿命而变化 - Curve(曲线)
通过曲线来动态修改粒子的相关参数,以粒子生命周期为例,该曲线表示的是“粒子生命周期”与“粒子大小”之间的关系。 - Random Between Two Constant(在两个数值之间随机选取)
- Random Between Two Curves(在两个曲线之间随机选取)
5.粒子系统中颜色及颜色渐变坡度控制
1.粒子系统的颜色控制
以粒子系统中的Start color为例,单击Start Color(初始颜色)后的白色块,如图5-1所示:
单击后会显示颜色编辑器,如图所示。
通过单击(RGB0-255)下拉箭头切换颜色模式,有RGB、HSV两种模式。
RGB模式是根据三原色的占比来设置最终颜色,而HSV是根据色彩三要素色相,饱和度和明度来设置颜色。
2.颜色渐变坡度控制
以Color over lifetime(生命周期颜色)之中的颜色编辑器设置为例,如图5-2所示。
选择Color over lifetime模块,打开后发现有两种模式可以选择。
第一种:Gradient(梯度控制)
选择了Gradient之后单击色块,进入颜色编辑器:
上方是控制不透明度的滑块,下方是控制颜色的滑块。不透明度从100%到100%再到0%,颜色从白色到蓝色再到浅蓝再到更浅的蓝色。可以任意增加透明度控制滑块点和颜色控制滑块点。Location可以精确显示当前所选择节点的位置,由左至右分别对应0%-100%。
第二种:Random between two gradient(两个梯度之间随机)
颜色将会由两个颜色过渡之间取随机值,设置方式跟单个颜色过度设置类似。
6.粒子系统组成部分
一个粒子系统由多个模块整合而成,如图所示。
1.Transform(变换组件):粒子系统的移动、旋转、缩放基本控制项。
2.Particle System(粒子系统初始化模块):固有模块,不可删除或者禁用。该模块定义了粒子初始化时的持续时间、循环方式、发射速度、大小等基本属性。
3.Emission(发射模块):控制粒子的发射速率,可以设置粒子在发射时间内的发射率,也可以指定 在某个特定时间产生大量的粒子。(比如爆炸效果等)
4.Shape(形状模块):定义粒子发射器的形状,可以提供沿着形状表面法线或者随机方向的初始力,并控制粒子的发射位置以及方向。
5.Velocity over lifetime(生命周期速度):控制粒子在生命周期内每一个粒子的速度,可以结合动画曲线实现一些复杂的效果。
6.Limit Velocity over lifetime(生命周期限速):控制粒子在生命周期内的速度限制以及速度衰减,可以模拟类似拖动的效果。
7.Inherit Velocity(速度继承):粒子继承速度设定。
8.Force over lifetime(生命周期作用力模块):控制粒子在生命周期内的受力情况。
9.Color over lifetime(生命周期颜色模块):控制粒子在生命周期内的颜色变化。
10.Color by Speed(颜色随速度变化模块):让每个粒子的颜色根据自身的速度变化而变化。
11.Size over lifetime(生命周期大小模块):控制每一颗粒子在其生命周期内的大小变化。
12.Size by Speed(大小随速度变化模块):让每颗粒子大小在生命周期内随速度变化。
13.Rotation over lifetime(生命周期旋转模块):控制粒子在生命周期内的旋转变化。
14.Rotation by Speed(旋转随速度变化模块):粒子的旋转速度根据自身速度的变化而变化。
15.External Forces(外部作用力模块):是否启用外力场影响。
16.Collision(碰撞模块):可为每个粒子建立碰撞效果,需要实时的碰撞检测。
17.Sub Emitters(子发射器模块):设置粒子在出生,消亡,碰撞三个时刻生成一个新的子粒子系统。
18.Texture Sheet Animation(纹理动画模块):可对粒子在其生命周期内的UV坐标产生变化,生成粒子的UV动画。可以将纹理划分成网格,在每一格存放动画的一帧。同时也可以将纹理划分为几行,每一行是一个独立的动画。
19.Render(渲染器模块):设置粒子渲染相关的属性。
列出了常用的一些粒子模块,还有部分未列出,可以根据需要查阅相关的文档。
7.粒子系统各项参数详细说明
7.1.Particle System(粒子系统初始化模块)
1.Duration(持续时间):粒子发射器发射粒子的持续时间,单位为秒。
2.Looping(循环):是否开启循环。
3.Prewarm(预热):预热开启后,粒子系统将会直接播放一个周期后的状态,不会显示有少到多的逐渐产生过程。
4.Start Delay(初始延迟):发射粒子前,等待延迟的时间,单位为秒。
5.Start Lifetime(初始生命周期):粒子的存活时间,单位为秒。
6.Start Speed(初始速度):粒子发射时的速度。
7.Start Size(初始大小):粒子发射时的初始大小。
8.3D Start Rotation(3D坐标旋转):可以设置粒子发射时的3D初始旋转。
9.Start Rotation(初始旋转):设置粒子发射时正面的初始旋转。(粒子系统的贴图默认都是只有正面朝向摄像机来渲染的,所以默认情况下只有一个方向的旋转)
10.Flip Rotation(翻转旋转):设置粒子发射时的翻转旋转。
11.Start Color(初始颜色):粒子发射时的颜色。
12.Gravity Modifier(重力修改器):粒子在生命周期内收到重力的影响。
13.Simulation Space(模拟空间):局部坐标系或者世界坐标系。
14.Play on Awake(唤醒时播放):如果启用该项,粒子会在Gameobject唤醒时(在Start方法执行之前)自动播放。
15.Max Particles(最大粒子数):粒子系统中的最大粒子数量。
列出了常用的一些粒子属性说明,还有部分未列出,可以根据需要查阅相关的文档。
想要掌握粒子系统的使用,只是从字面上理解属性是没办法做到的,在后面的文章中我们将会学习到如何使用粒子系统创建一些特定的效果。