应公司要求分享unity自带的粒子系统,借此契机,总结了unity5.6.1粒子系统大部分属性。
duration:粒子系统发射粒子的持续时间。
Looping:粒子循环
Prewarm:粒子预热,若开启,则粒子系统在游戏运行初始就已经发射粒子了,只有在粒子系统循环播放下才能开启此项。
Start delay:粒子初始延迟,在开启粒子预热时无法使用此项。
Start lifetime:粒子生命周期,单个粒子从发射到消亡的存活时间,以秒为单位。
Start speed:粒子初始速度。
Start size:粒子初始大小。
Start rotation:粒子初始旋转。
Randomize rotation:导致一些粒子在相反方向旋转,值范围0~1,值越大,反方向旋转粒子越多,当值为1的时候,全部粒子反方向旋转。
Start color:粒子初始颜色。
Gravity modifier:重力修改器。
Simulation space:模拟空间,随本地坐标还是世界坐标移动,包括以下三个选项:
àLocal:表示发射出来的粒子属于本地粒子发射器,粒子发射器在哪里粒子就在哪里,粒子之间保持原有互动
àWorld:表示发射出来的粒子属于世界的,当粒子发射器移动,已经发射的粒子还是留在原地,可以制作拖尾效果。
àCustom:可以设置粒子系统受某物体移动的影响。物体停止运动,影响停止。
Simulation speed:模拟速度,默认值为1,以倍数的形式整体更改播放速度,类似快进。
Scaling mode:缩放模式,包括以下三种:
àHierarchy:受自身缩放影响,也受父级的缩放影响。
àLocal:只受自身的缩放影响。
àShape:不受缩放的影响,只与发射器有关。
Play on awake:唤醒时播放,在游戏运行时会自动播放粒子,但不影响start delay的效果。
Max particles:最大粒子数量,就是一个duration内发射粒子最多的数量,如果是1的话,一个duration只发射1。
Autorandom seed:随机种子,用于粒子系统发射,如果设置为0,将在唤醒时分配随机值。
注:初始化模块中的曲线x轴为持续时间。
这对于在模拟爆炸效果需要产生一大堆粒子的时候非常有用。
Rate over Time:每秒(单位时间内)发射粒子个数。
如果Duration是5秒,Max Particles是10的话,Rateover Time为2,那么就是每秒发射2个粒子,5秒就发射10个(当然,你要是较劲,亲自数一数的话,最终其实只发射了9个,如果改为5.1s,就能达到最大数目10)。现在如果把Rate改成10的话,那么一秒就把所有的粒子发射完毕,接下来的四秒就无粒子可发。
Rate over Distance:粒子系统移动时,单位距离内发射的个数(“simulation space”必须设置为世界坐标)
Bursts:爆发,在给定时间点瞬间爆发给定的粒子个数
Time为设定的爆发时间点,注意需要在粒子的持续时间内。
Min、Max:爆发点时最小和最大粒子数量。
Cycles:爆发多少次。
Interval:每一次爆发的时间间隔,单位秒。
主要是定义粒子的发射器的形状,控制发射方向位置等
shape:球体(sphere)、半球体(hemishpere)、圆锥(Cone)、立方体(Box)、网格(Mesh)。可沿着表面法线或随机方向施加初始力。
(1)球体(Sphere)
Radius:球体的半径。
Emitfrom Shell:从球体外壳发射。如果禁用此项,粒子将从球体内部发射。
Align To Direction:是否沿着球体表面法线方向发射
RandomDirection:粒子是在随机方向还是沿着球体表面法线方向发射
(2)半球体 (Hemisphere)
Radius:半球体的半径。
Emitfrom Shell:从半球体外壳发射。如果禁用此项,粒子将从半球体内部发射。
RandomDirection:随机方向,粒子是在随机方向还是沿着半球体表面法线方向发射。
(3)圆锥 (Cone)
Angle:锥形斜面和垂直方向的夹角。如果角度为0就是圆柱,粒子将在一个方向发射。
Radius:发射点的半径(锥形底面的半径)。如果值接近零,则将从一点发射。
Length:圆锥的高——地面和顶面的距离,受Emit From参数影响,仅从内部 (Volume) 或内部外壳 (Volume Shell) 发出时可用。
EmitFrom:确定从哪里发射出。可能的值有底部 (Base)、底部外壳 (Base Shell)、内部 (Volume) 和内部外壳 (Volume Shell)。
Base:粒子从圆锥体底面的任意位置沿着体积方向发射出去。
BaseShell:从地面的周长边沿着测表面的方向发射。
随机方向 (Random Direction) 粒子是在随机方向还是沿着圆锥方向发射?
(4)立方体 (Box)
立方体 X 轴 (Box X) 立方体 X 轴的缩放。
立方体 Y 轴 (Box Y) 立方体 Y 轴的缩放。
立方体 Z 轴 (Box Z) 立方体 Z 轴的缩放。
随机方向 (Random Direction) 粒子是在随机方向还是沿着立方体 Z 轴方向发射?
(5)网格 (Mesh)
类型 (Type) 粒子可从顶点 (Vertex)、边 (Edge) 或面 (Triangle) 发射。
网格 (Mesh) 选择网格 (Mesh) – 作为发射形状。
随机方向 (Random Direction) 粒子是在随机方向还是沿着网格表面方向发射?
直接动画化粒子的速率,演示简单的视觉行为(例如飘荡的烟雾),分为x、y、z轴来调节,正数改变正方向的速度,负数改变负方向的速度。
Space:Local/world,速度值时本地坐标系还是世界坐标系中的值
基本上用于模拟阻力。如果超过设定的限定速度,就会抑制或固定速率。
SeparateAxis:分离轴。用于设置每个轴控制。
Speed:限制的速度。
Dampen:阻尼,范围0-1,控制应减慢的超过速率的幅度。例如,阻尼为1的时候,表示生命周期结束的时候,将超过的速率减慢100%,也就是速度降到限定的速度;将值为 0.5,则将超过的速率减慢 50%。
对于运动中的粒子系统,将其移动速率应用到新生成的粒子速率上。
Initial:发射器的当前速度将被应用于每一帧的所有粒子。例如,如果发射器减速,所有的粒子也将减速。
Current:当每个粒子诞生时,发射器的速度将被施加一次。粒子诞生后发射器速度的任何变化都不会影响粒子。
Multiplier:粒子应该继承的发射器速度的比例。
XYZ:通过X、Y、Z轴来控制作用于粒子上的力。
Space:local/world,速度值时本地坐标系还是世界坐标系中的值。
Randomize:随机化每帧作用于粒子上的力。
Color:控制粒子在其存活期间的颜色。
Color:用于重新映射速度的颜色。
Speed range:速度范围,用于将速度映射到颜色上,某速度对应某颜色。
Size:控制粒子在其生命周期内的大小。
Size:用于重新映射速度的大小。
Speed range:速度范围,用于将速度映射到大小上。
Angular velocity:控制粒子在其生命周期内的旋转速度。
Agular velocity:映射粒子速度的旋转速度。
Speed range:速度范围,用于将速度映射到旋转速度上。
Multiplier:乘数,粒子会受到风力的影响,当增加Multiplier的值,会加大风力对粒子的影响。
粒子运动中增加噪声,可以改变粒子运动轨迹,创建出怪异不规则的运动。
Separate Axes:分离轴,想让粒子往哪个方向飘,就对应XYZ轴调整速度,如果向四周散可以不勾。
Strength:粒子波动的强度,数值越高,粒子起伏越大。
Frequency:数值越大,粒子行进方向改变越快。
Scroll speed:滚屏速度,值越大,预览窗口移动速度越大,随着时间的推移,导致更多的不可预知和不稳定的粒子运动。
Damping:阻力,减震,默认勾上
Octaves:倍频,指定多少层重叠的噪音组合在一起产生最终的噪音值。使用更多的层会带来更丰富,更有趣的噪音,但会显着增加性能成本。
Octaves multiplier:按此比例降低强度
Octaves scale:数值越大波动频率越快。
Quality:品质,一般选high,效果最好看,性能成本高
Remap:映射,对应分离轴参数。可以再一次调整粒子波动强度
为粒子系统设置碰撞,支持世界碰撞和平面碰撞,世界碰撞采用光线投射。
Planes/world:planes指平面碰撞,world指世界碰撞。
平面碰撞支持6个平面,点击+号可以添加现在有的平面或是新建立一个
Dampen:阻尼,范围0~1,粒子碰撞时,其将保持这一速度比例,粒子在碰撞后变慢。设置为1.0,完全抑制,可以使碰撞的粒子消失。
Bounce:反弹(0~2),粒子系统碰撞时,让产生碰撞的粒子以某个角度反弹出去。
Lifetime loss:生命减弱(0~1),每次碰撞后初始生命周期减弱比例。生命周期达到0后,粒子死亡。例如,粒子在第一次碰撞时死亡,则该属性设为1.0。
Min kill speed:粒子在被杀死前的最小速度,当速度小于这个值的时候,粒子消失。
Send collision messages:发送碰撞消息。确定是否触发游戏对象和粒子系统上的OnParticleCollision回调。
只在平面模式中可用的属性
Planes:平面。通过向变换分配引用来定义。该变换可为场景中的任何变换,且可动画化。可以使用多平面。注意:Y 轴用作平面法线。
Visualization:可视化。仅用于将平面可视化:网格 (Grid) 或实体 (Solid)。
网格 (Grid) 渲染为小图示,能快速指出在世界中的位置和方向。
实体 (Solid) 在场景中渲染平面,用于精确定位平面。
Scale Plane:缩放平面。调整可视化平面大小。
Particle Radius:粒子半径。因碰撞目的假设的粒子半径。(因此,粒子视为球体。)
只在世界模式 (World Mode) 中可用的属性
Collides With:碰撞对象。用于指定碰撞器的筛选器。选择所有东西 (Everything),来与整个世界碰撞。
Collision Quality:世界碰撞的质量。
->高质量 (High):每个粒子会每帧与场景做一次射线碰撞检测。注意:这是 CPU 密集型应用,只能使用 1000 个或更少的同步粒子。
->中等质量 (Medium): 在每帧中,粒子系统接收一部分全局设置粒子光线投射计划(Particle Raycast Budget)。粒子以循环方式更新,其中在给定帧中不接收光线投射的粒子将查找和使用高速缓存中存储的较旧碰撞物。注意:这类碰撞属于近似碰撞,会遗漏一些粒子,特别是在角落处。
->低质量 (Low):除了粒子系统每四帧获得一部分粒子光线投射计划 (ParticleRaycast Budget)之外,其他与中等质量 (Medium) 相同。
Colliders:需要传入的触发器。
粒子和触发器之间的不同的状态:
àInside: 粒子在触发器里面
àOutside: 粒子在触发器外面
àEnter: 粒子进入触发器
àExit: 粒子退出触发器
每个不同的状态后面有三个选项:
àIgnore: 忽略,表示粒子不做任何处理。
àKill: 杀死,表示粒子会消亡。
àCallback:回调,需要代码添加。
Radius Scale: 触发半径大小。
Visualize Bounds:勾选后,触发半径区域在scene视图中可见。
可在出现下列粒子事件时生成其他粒子系统:粒子产生、死亡或碰撞。
Birth:该粒子系统中每个粒子产生时生成另一个粒子系统。
Death:该粒子系统中每个粒子死亡时生成另一个粒子系统。
Collision:该粒子系统中每个粒子碰撞时生成另一个粒子系统。
重要提示:需要使用碰撞模块 (Collision) 建立碰撞。
在粒子生命周期内动画化uv坐标。按照从左到右,从上到下的顺序一次渲染,列是X轴,行是Y轴。
Tiles:贴图分块数,通过X和Y轴的切割来确定期望效果。
Animation:Whole Sheet(整图) Single Row(单行)
Random Row:随机行,Single模式下才有此选项。
Row:行数,第一行为0,Single模式下才有此选项。
Frame over Time:粒子生命周期内的帧数,提供了固定数值和曲线等方式。
Start Frame: 初始化帧
Cycles: 指定动画速度,表示粒子生命周期内的贴图渲染次数,默认1为播放1次,2则在相同时间内播放2次。
Flip U/V:翻转U/V
Enabled UV Channels: 允许你指定正确的UV流
将影片转成unity particle可用的连续贴图(每张贴图只能是正方形的,2的幂次方尺寸为佳):
--》准备影片素材,2、3秒即可,最好是全黑背景,到时可以直接用additive shader,不用抠图。
--》使用quick time将影片输出成连续图片(file➡export)。
--》使用photoshop的action功能批量处理图片,主要是裁剪成方形图(建立action,文件➡自动➡批处理)。
--》使用texture packer工具合成一张png大图,设置Algorithm为Basic即可按照通过命名来依次排序。另外,还可以使用ps的“文件➡自动➡联系表II”的功能来合成图片,注:不要选择拼合图层,否则会和白色背景层拼合在一起。
扩展:使用texture sheetanimation可以定位贴图,所以可以制作一些贴图合集,按照2次方的格子排列拼接成大图,这样很多粒子发射器可以共用一张贴图和材质球,可优化Drawcall。
可以将实时光附着在一部分粒子上。
Light:指定一个Light prefab。
Ratio:0-1,描述将接收光的粒子的比例。
Range multiplier:光线范围
Intensity Multiplier:光强度
Maxinum Lights:最大灯光数
为粒子系统添加拖尾的效果
Ratio:比率,粒子产生拖尾的比率,范围0~1。
Lifetime:粒子产生拖尾的时长,按照粒子寿命比例来计算,范围0~1,影响拖尾的长度。
Minimum Vertex Distance:最小顶点距离,值越小拖尾跳动越小。
Texture Mode:贴图模式
Die with particles:伴随粒子死亡,勾上会随粒子死亡而死亡。
Size affects width:勾上,拖尾宽度根据粒子大小而定。
Size affects lifetime:粒子大小影响拖尾的时长,也就是影响拖尾的长度。
Inherit Particle Color:是否继承粒子的颜色,也就是跟随粒子颜色而变化。
Color over lifetime:生命周期内的颜色。
Width over Trail:拖尾宽度。
color over Trail:拖尾的颜色。
“自定义数据”模块允许您在编辑器中定义自定义数据格式以附加到粒子。你也可以在脚本中设置它。
https://docs.unity3d.com/Manual/PartSysCustomDataModule.html
Billboard:广告牌,让粒子始终面向相机。
Stretched Billboard:拉伸广告牌,使用下列三个参数拉伸粒子。
->相机缩放 (Camera Scale):摄像机的速度对于粒子伸缩影响程度。
->速度缩放 (Speed Scale):通过对比粒子速度来确定其长度。
->长度缩放 (Length Scale):通过对比粒子宽度来确定其长度。
Horizontal Billboard:水平广告牌,让粒子与 XZ 平面对齐。
Vertical Billboard:垂直广告牌,让粒子与 Y 轴对齐。
Mesh:网格模式,使用网格而非四边形渲染粒子。
->网格 (Mesh) :渲染粒子所用的网格引用。
Normal Direction:法线方向,值 0 至 1,确定法线与相机所成角度(0) 及偏离视图中心的角度 (1)。
Material:材质,广告牌或网格粒子所用的材质。
Sort Mode:排序模式,粒子绘制顺序可通过距离、最先生成或最晚生成来排列。
Sorting Fudge:排序校正,使用该项影响绘制顺序。具有较小排序校正数值的粒子系统更可能放在最后绘制,因此显示在其他透明对象(包括其他粒子)前面。
Cast Shadows:投射阴影,粒子是否会投射阴影,由材质决定。
Receive Shadows:接受阴影,粒子是否会接受阴影,由材质决定。
MinParticle Size:最小粒子大小。
Max Particle Size:最大粒子大小,相对于视窗大小,设置最大大小。有效值:0-1。
一些操作问题:
1、可以直接拖入图片到粒子系统生成以图片命名的材质,若该目录下已经存在该材质了,就不会继续创建了。(可以相同方式拖入材质,替换粒子系统原有材质)
自动生成的材质放在哪里: 若图片放在Textures文件夹下,系统将自动在Textures的同级文件夹下创建Materials文件夹(若已存在,则不会再创建),并将材质放在此新建文件夹下;若图片的父级文件夹不是Textures,则系统将在图片的同级文件夹下创建Materials文件夹。
若使用了上述方式添加材质,再通过Renderer模块拖入Material替换的话,将出现粒子系统挂载两个材质的情况,但只显示了一种材质此时,想直接删除材质是删除不掉的,再使用上述拖入方式添加材质就可以只显示一个材质了。
动图