Unity3D基础入门之粒子系统(属性介绍+火焰粒子系统案例制作)
一、属性介绍
1、主面板Particle System
(1)Duration:粒子发射周期
图中,5.00即在发射5秒后进入下一个粒子发射周期。若没有勾选Looping,则5秒后粒子会停止发射。
(2)Looping:粒子按照周期循环发射
让粒子发射时间循环起来,一直发射粒子。
(3)Prewarm:预热系统
开始播放粒子是已经发射了一段时间的,只在Looping循环时才有效。
(4)Start Delay:粒子延时发射
粒子系统创建后隔多久后才开始发射粒子。如果有Prewarm则没法设置延时。0就是不延时;若为5,则5秒后才开始发射。
(5)Start Lifetime:粒子从发生到消失的时间长短
(6)Start Speed:粒子初始发生时候的速度
一般选择两个值之间,点击后面的倒三角,选择Random Between Two Constants。
Constant(常量):固定的值,不会变化。
Curve(曲线):用曲线代表Duration时间内的变化。竖轴是这个值的变化,横轴是Duration时间。但注意的是初始的值,出生时的不同,一旦出生了,是其他值控制。
Random Between Two Constants(随机在两个常量间变化):随机值。
Random Between Two Curves(随机在两个曲线间变化):随机曲线。
(7)3D Start Size:3D粒子初始大小
可以让粒子在X、Y、Z三个轴上有不同的尺寸。当粒子是billboard模式时,Z轴调节无意义。
(8)Start Size:粒子初始大小
总体设置初始的尺寸。X、Y、Z三个轴同步大小,单位是米。
(9)3D Start Rotation:3D粒子初始旋转
粒子可以绕着X、Y、Z三个轴设定不同的角度。
(10)Start Rotation:粒子初始旋转
默认是只设置z轴方向旋转角度,值是角度。
(11)Flip Rotation:反跳旋转
主要针对设定的Start Rotation值进行反方向的变化。假如旋转是10。这个值设置为1,就会变成-10。设为0.5就会变成一个从-10~10的随机。
(12)Start Color:粒子初始颜色
颜色上经常有这几个变换:
Color(颜色):设置一个颜色。
Gradient(渐变):可以设置一个渐变色。从左到右是Duration时间。
Random Between Two Colors(随机在两个颜色变化):随机颜色。
Random Between Two Gradients(随机在两个渐变变化):随机渐变。
Random Color(随机颜色):它跟Random Between Two Colors最大的不同是可以控制随机颜色的数量。
(13)Gravity Modifier:重力修正器
粒子施加一个向下的力。负值是向上的。注意这个值是一个外部的力,它不随粒子系统缩放而改变。
(14)Simulation Space:模拟空间
就是使用的空间坐标。粒子的运动所使用的空间坐标。
Local(自身): 使用自身粒子系统的游戏物体的坐标。
World(世界):使用世界坐标,就是场景坐标。
Custom(制定):使用另一个物体的坐标。当这个物体坐标变化时,粒子也会跟着变化,比如物体的位移会带动粒子位移。
(15)Simulation Speed:模拟速度
整体改变粒子的运动快慢,注意不只是粒子的速度,而是粒子总体属性在空间位置中的变化,整体放慢或加快。
(16)DeltaTime:变量时间
Delta Time是一个函数。确切意思是上一帧的时间情况。因为设备刷新率的不同,所以一帧消耗的时间也是不一样的。这个Scaled是调节使用时间变化而非帧的变化。每帧走1米和每0.1秒走一米是不一样的。默认是Scaled(缩放的)是正确的。
(17)Scaling Mode:缩放模式
缩放粒子系统时的状况。
Hierarchy(阶层):默认值。
Local(自身):效果上是和Hierarchy一样,如果粒子系统缩放,粒子的运动距离和大小同时被缩放。Gravity Modifier的力不会被缩放。
Shape(形状):只会缩放发射器的大小。
(18)Play On Awake:唤醒就播放
勾掉时,运行时出现粒子系统并不会播放,直到在程序中勾上这个勾才会播放,便于程序控制。
(19)Emitter Velocity:发射速率
是关于粒子移动方式。
(20)Max Particles:最大粒子数
为了节省开支设定粒子数量的上限。
(21)Auto Random Seed:自动随机种子
粒子呈现的状态是由seed种子决定的,相同的seed产生的结果相同。而seed数十分庞大,如果用了随机种子,可能永远不会碰到数值一样、粒子状态一样的情况。
(22)Stop Action:停止行动
当粒子系统发射完了所有粒子之后的程序的处理方式,跟消耗有关。
None:无处理,内存被动释放。
Disable:禁用,就是被废弃状态,不会再出现,但是还在内存中。
Destroy:被摧毁掉,内存会直接释放掉。
Callback:添加脚本或者在原有脚本中监听以下函数:
public void OnParticleSystemStopped()
即可监听到粒子系统的完全停止。
(23)Culling Mode:剔除模式
当粒子系统从屏幕中移出的时候,对应的处理方式。
Automatic:如果粒子系统是循环发射,则会暂停发射,非循环情况下不会暂停发射。
Pause and Catch-up:暂停粒子播放,当再次移入屏幕时,会做额外计算,使粒子系统看起来像没有被暂停过一样,是耗性能的设置,根据实际情况使用。
Pause:暂停粒子发射。
Always Simulate:不会暂停粒子发射。
(24)Ring Buffer Mode:环形缓冲模式
控制粒子的消失方式,这个模式适合用来做脚印或者弹孔等持续性的效果。
Disabled:粒子在自己的生命周期后销毁。
Pause Until Replaced:粒子在生命周期后并不会被销毁,保持最后的形态直至系统中的粒子数超过最大限制后立即被新粒子取代。
Loop Until Replaced:这种模式跟上一种很像,在自己的生命周期后不会销毁,选择该设置后会增加一个Loop Range的选项:
可以设置从0 ~ 1的值,这个值表示的是粒子生命周期的比重,比如设置的是0 ~ 0.5,如果粒子的生命周期是2s,那么经过2s后,粒子会重复显示0s ~ 1(2 * 0.5)s这段时间内粒子的效果,直至超过系统最大粒子数后被新粒子取代。
2、发射器Emission模块
粒子发射的速率,以及瞬间发射大量粒子(爆炸效果),可以在该模块中进行设置。
(1)Rate over Time:发射频率按时间
1秒发射的数量。曲线时间轴是Duration时间。
(2)Rate over Distance:发射频率按距离
1米发射的数量。曲线时间轴是Duration时间。
(3)Bursts:迸发
从第几(Time)秒开始。发射多少个(Count)。这次发射循环几次(Cycles)。每次循环间隔多久(Interval)。
Time:粒子爆发的时间,不能超过粒子系统的Duration,就算你填写一个非法的数,也会被强制修改。
Count:如果选择曲线,曲线的横轴是时间轴,代表的是粒子系统的生命周期。有4个配置可以选择.
Cycles:从爆发时间开始的循环次数。
Interval:两次循环的间隔时间,超过粒子系统的Duration无意义。
Probability:每次爆发的可能性。
3、发射器形状Shape模块
发射器形状内部随机位置生成,并能提供初始的力,该力的方向将延表面法线或随机方向发射。
(1)Sphere:球体
Radius:球体半径。
Radius Thickness :发射粒子的体积比例。值为0表示从形状的外表面发射粒子,值为1表示从整个体积发射粒子。
Arc:圆弧,适用于球体、半球、椎体、甜甜圈、圆形边缘。
(1)Mode:模式控制粒子围绕圆弧生成的模式
(Random随机,Loop循环,Ping-Pong乒乓,Burst Spread突发扩张)。
(2)Spread:传播,只在弧的特定角度产生粒子。
(0为禁用,在Arc设定的值下,展现特定的角度来发射粒子,看起来没有那么随机)。
Texture:粒子用来从上边获得颜色纹理。
Position:改变粒子发射的位置。
Rotation:改变粒子发射的旋转。
Scale:改变粒子发射的形状缩放。
Align To Direction:根据粒子的初始行进方向定向粒子。(貌似广告板模式失效,图片朝向都改成了初始速度的方向)
Randomize Direction:将粒子方向朝随机方向混合,设置为0将不起作用,设置为1时粒子方向完全随机。
Spherize Direction:将粒子方向朝球面方向混合,从它们的变换中心向外行进。设置为 0 时,此设置不起作用。设置为 1 时,粒子方向从中心向外(与 Shape 设置为 Sphere 时的行为相同)。
Randomize Position:以随机量移动粒子,直至达到指定值。此属性设置为 0 时,此设置不起作用。任何其他值都会对粒子的生成位置应用一些随机性。
(2)Hemisphere:半球
(3)Cone:椎体
(4)Donut:甜甜圈
(5)Box:盒子
(6)Mesh,Mesh Renderer,Skinned Mesh Renderer:网格和网格渲染
Type:指定从何处发射粒子。(Vertex从顶点发射粒子,Edge从边上发射,Triangle从三角形发射)
Mode:如何为每个新粒子选择网格上的位置。(Random随机位置的粒子,Loop从网格中下一个顶点发射每个新粒子,Ping-Pong类似Loop,但会在每个循环后沿网格顶点交替方向)
Mesh:提供发射器形状的网格。
Single Material:指定是否从特定子网格(由材质索引标识)发射粒子。(启用此属性,会显示一个数字字段,可以用该字段指定材质索引号)
Use Mesh Colors:使用网格顶点颜色调整粒子颜色,或者,如果顶点颜色不存在,则使用材质中的着色器颜色属性color或者tincolor。
Normal Offset:在距离网格表面多远处发射粒子(在表面法线方向上)
(7)……
4、Texture Sheet Animation模块
粒子的图形不必是静止图像。此模块允许您将纹理视为可做为动画帧进行播放。
(1)Mode
分别有Grid模式和Sprites模式。
(2)Tiles
纹理在水平和垂直方向上划分的区块数量。
若纹理为3行4列,则X、Y分别填入3,4。
(3)Animation
动画模式。可设置为Whole Sheet或Single Row
(即精灵图集的每一行代表一个 单独的动画序列)
(4)Time Mode
选择粒子系统如何在动画中对帧进行采样。
(5)Frame over Time
通过一条曲线指定动画帧随着时间的推移如何增加。
(6)Start Frame
允许指定粒子动画应从哪个帧开始。
(7)Cycles
动画序列在粒子生命周期内重复次数。
(8)Affected UV Channels
允许具体指定粒子系统影响的UV流。
5、Lights模块
使用此模块可将实时光照添加到一部分粒子。
(1)Light
分配一个光照,说明粒子的灯光应该是什么样子。
(2)Ratio
一个介于0和1之间的值,表示将接受光照的粒子的比例。
(3)Random Distribution
选择是随机分配还是定期分配光照。设置为true时,每个粒子都有根据ratio的值随机接受光照的机会。较高的值可增加粒子接受光照的概率。为false时,由ratio控制新创建的粒子接受光照的频率。
(4)Use Particle Color
设置为true的时候,光照最终颜色将通过其附加到的粒子的颜色进行调制。为false则不作任何更改。
(5)Size Affects Range
启用此属性在光照中指定的Ratio(范围)将受到粒子大小的影响。
(6)Alpha Affects Intensity
启用此属性后在光照的Intensity(强度)将受到粒子Alpha影响。
(7)Range Multiplier
使用此曲线在粒子的生命周期内将一个自定义乘数应用于光照范围。
(8)Intensity Multiply
使用此属性在粒子的生命周期内将一个自定义乘数应用于光照强度。
(9)Maximum Lights
使用此设置可避免意外创建大量光照,大量光照可能会使编辑器无响应,且影响程序性能。
6、Renderer模块
(1)Render Mode
Billboard:粒子始终面向摄像机。
Stretched Billboard:粒子面向摄像机,但是会应用各种缩放。
(Camera Scale:根摄像机运动拉伸粒子。为0禁用相机运动拉伸)
(Velocity Scale:根据粒子速度比例拉伸粒子。为0禁用)
(Length Scale:沿着粒子速度方向根据粒子当前大小按比例拉伸粒子。为0则会使粒子消失)
Horizontal Billboard:粒子平面与XZ“地板”平面平行。
Vertical Billboard:粒子在世界y轴上直立,但面向摄像机。
Mesh:从3D网格而非从纹理渲染粒子。(粒子会变成立体的)
None:使用Trails模块时,如果只是想渲染轨迹并隐藏默认渲染,则可使用此属性。(不启用Trails模块时,粒子会消失)
(2)Normal Direction
用于粒子图形的光照法线的偏差。值为1表示法线指向摄像机,而值为0表示法线指向屏幕中心。(仅适用于Billboard模式)
(3)Material
渲染粒子的材质
(4)Sort Mode
绘制粒子的顺序。
(5)Sorting Fudge
粒子系统排序的偏差。较低的值会增加粒子系统在其他透明对象(包括其他粒子系统)上绘制的几率。对整个系统有影响,对单个粒子排序没影响。
(6)Min Particle Size
最小粒子大小(仅当Billboard模式)
(7)Max Particle Size
最大粒子大小(仅当Billboard模式)
(8)Render Alignment
使用下拉单选框选择粒子公告牌面向的方向。
(View:粒子面向摄像机平面)
(World:粒子与世界轴对齐)
(Local:粒子与游戏对象的变换组件对齐)
(Facing:粒子面向摄像机游戏对象的直接位置)
(9)Flip
在指定轴上镜像一定比例的粒子。较高的值会翻转更多的粒子。
(10)Allow Roll
控制面向摄像机的粒子是否可以围绕摄像机的z轴旋转,禁用此属性对VR应用特别有用。
(11)Pivot
修改粒子的中心轴点。此值是粒子大小的乘数。
(12)Visualize Pivot
在Scene视图中预览粒子的轴心点。
(13)Masking
设置粒子系统渲染的粒子在与精灵遮罩交互的行为方式。
(No Masking:不与厂家中任何精灵遮罩交互)
(Visible Indide Mask:在由精灵遮罩覆盖的地方是可见的,而在遮罩外部不可见)
(Visble Outside Mask:在精灵遮罩外部是可见的,而在遮罩内部不可见,精灵遮罩会隐藏其覆盖的粒子部分)
(14)Apply Active Color Space
在线性颜色空间中渲染时,系统会在将粒子颜色上传到 GPU 之前从伽马空间转换粒子颜色。
(15)Custom Vertex Streams
配置材质的顶点着色器中可用的粒子属性。
(16)Cast Shadows
启用此属性,粒子在光下会产生阴影。(Two Sided允许从网格的任一侧投射阴影,Shadows Only使阴影可见,网格不可见)
(17)Receive Shadows
决定阴影是否可投射到粒子上。只有不透明材质才能接受阴影。
(18)Shadow Bias
沿着光照方向移动阴影以消除因使用公告牌来模拟体积而导致的阴影瑕疵。
(19)Motion Vectors
运动矢量
(20)Sorting Layer ID
渲染层级
(21)Order in Layer
此渲染器在排序图层中的顺序。
(22)Light Probes
基于探针的光照插值模式。
(23)Reflection Probes
如果启用此属性,并且场景中存在反射探针,则会为此游戏对象拾取反射纹理,并将此纹理设置为内置的着色器 uniform 变量。
7、其他模块暂不介绍
二、火焰粒子系统案例制作
1、火焰素材
本案例以下面火焰素材为例。
2、创建粒子系统
Hierarchy面板中,在需要创建粒子系统的物体下,鼠标右击,选择Effects | Particle System。对其重命名为HuoYan。
3、创建材质球
在Project面板中创建一个新的材质New Material,重命名为HuoYan,一定要将其Shader修改为Additive(Mobile/Particles/Additive),这个模式主要是可以去除透亮贴图中的黑色部分。
4、贴图
(1)将火焰素材图片拖入Textures文件夹中。
(2)将贴图赋给材质,再将材质拖给Hierarchy面板中的粒子系统。
5、属性修改
(1)务必勾选上纹理层动画模块Texture Sheet Animation,并设置其贴图的行列Tiles,本例中改为2,2,如下图所示。
(2)通常将粒子系统Renderer里的最大粒子大小Max Particle Size由初始的0.5修改为1(也就是视窗大小,它的有效值为0-1)。
(3)此时粒子都是朝着一个方向,非常地规律,没有火焰的样子,这时我们需要调整它的初始旋转角度Start Rotation,选择“倒三角”下的Random Between Two Constants(-360,360)。
(4)更改发射器Emission模块中的数值,使火焰更加逼真。
(5)还可以对其形状做修改。
(6)对火焰颜色进行一个调整,用到Color over Lifetime。下图箭头中,上面代表透明度,下面代表颜色。
(7)还可以修改其初始生命周期Start Lifetime,初始速度Start Speed,初始大小Start Size等属性。