Unity粒⼦系统
应公司要求分享unity⾃带的粒⼦系统,借此契机,总结了unity5.6.1粒⼦系统⼤部分属性。
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轴为持续时间。
2、emission发射器
这对于在模拟爆炸效果需要产⽣⼀⼤堆粒⼦的时候⾮常有⽤。
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:每⼀次爆发的时间间隔,单位秒。
3、shape 形状模块
主要是定义粒⼦的发射器的形状,控制发射⽅向位置等
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) 粒⼦是在随机⽅向还是沿着⽹格表⾯⽅向发射?
4、Velocityover Lifetime⽣命周期内的速度
直接动画化粒⼦的速率,演⽰简单的视觉⾏为(例如飘荡的烟雾),分为x、y、z轴来调节,正数改变正⽅向的速度,负数改变负⽅向的速度。
Space:Local/world,速度值时本地坐标系还是世界坐标系中的值
5、Limitvelocity over lifetime:⽣命周期内的速度限制
基本上⽤于模拟阻⼒。如果超过设定的限定速度,就会抑制或固定速率。
SeparateAxis:分离轴。⽤于设置每个轴控制。
Speed:限制的速度。
Dampen:阻尼,范围0-1,控制应减慢的超过速率的幅度。例如,阻尼为1的时候,表⽰⽣命周期结束的时候,将超过的速率减慢100%,也就是速度降到限定的速度;将值为 0.5,则将超过的速率减慢 50%。
6、Inherit velocity粒⼦速度继承
对于运动中的粒⼦系统,将其移动速率应⽤到新⽣成的粒⼦速率上。
Initial:发射器的当前速度将被应⽤于每⼀帧的所有粒⼦。例如,如果发射器减速,所有的粒⼦也将减速。
Current:当每个粒⼦诞⽣时,发射器的速度将被施加⼀次。粒⼦诞⽣后发射器速度的任何变化都不会影响粒⼦。
:粒⼦应该继承的发射器速度的⽐例。
7、Forceover lifetime⽣命周期内的受⼒
XYZ:通过X、Y、Z轴来控制作⽤于粒⼦上的⼒。
Space:local/world,速度值时本地坐标系还是世界坐标系中的值。
Randomize:随机化每帧作⽤于粒⼦上的⼒。
8、Color overlifetime⽣命周期内的颜⾊
Color:控制粒⼦在其存活期间的颜⾊。
9、Color by speed颜⾊随速度变化
Color:⽤于重新映射速度的颜⾊。
Speed range:速度范围,⽤于将速度映射到颜⾊上,某速度对应某颜⾊。
10、Size overlifetime⽣命周期内的粒⼦⼤⼩
Size:控制粒⼦在其⽣命周期内的⼤⼩。
11、Size by speed速度⼤⼩随速度变化
Size:⽤于重新映射速度的⼤⼩。
Speed range:速度范围,⽤于将速度映射到⼤⼩上。
12、Rotation overlifetime⽣命周期内的旋转
Angular velocity:控制粒⼦在其⽣命周期内的旋转速度。
13、Rotation byspeed旋转随速度变化
Agular velocity:映射粒⼦速度的旋转速度。
Speed range:速度范围,⽤于将速度映射到旋转速度上。
14、Externalforces外⼒
Multiplier:乘数,粒⼦会受到风⼒的影响,当增加Multiplier的值,会加⼤风⼒对粒⼦的影响。
15、Noise噪声
粒⼦运动中增加噪声,可以改变粒⼦运动轨迹,创建出怪异不规则的运动。
Separate Axes:分离轴,想让粒⼦往哪个⽅向飘,就对应XYZ轴调整速度,如果向四周散可以不勾。
Strength:粒⼦波动的强度,数值越⾼,粒⼦起伏越⼤。
Frequency:数值越⼤,粒⼦⾏进⽅向改变越快。
Scroll speed:滚屏速度,值越⼤,预览窗⼝移动速度越⼤,随着时间的推移,导致更多的不可预知和不稳定的粒⼦运动。
Damping:阻⼒,减震,默认勾上
Octaves:倍频,指定多少层重叠的噪⾳组合在⼀起产⽣最终的噪⾳值。使⽤更多的层会带来更丰富,更有趣的噪⾳,但会显着增加性能成本。
Octaves multiplier:按此⽐例降低强度
Octaves scale:数值越⼤波动频率越快。
Quality:品质,⼀般选high,效果最好看,性能成本⾼
Remap:映射,对应分离轴参数。可以再⼀次调整粒⼦波动强度
16、Collision碰撞
为粒⼦系统设置碰撞,⽀持世界碰撞和平⾯碰撞,世界碰撞采⽤光线投射。
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) 相同。
17、Triggers
Colliders:需要传⼊的触发器。
粒⼦和触发器之间的不同的状态:
àInside: 粒⼦在触发器⾥⾯
àOutside: 粒⼦在触发器外⾯
àEnter: 粒⼦进⼊触发器
àExit: 粒⼦退出触发器
每个不同的状态后⾯有三个选项:
àIgnore: 忽略,表⽰粒⼦不做任何处理。
àKill: 杀死,表⽰粒⼦会消亡。
àCallback:回调,需要代码添加。
Radius Scale: 触发半径⼤⼩。
Visualize Bounds:勾选后,触发半径区域在scene视图中可见。
18、Subemitters⼦发射器
unity3d animation可在出现下列粒⼦事件时⽣成其他粒⼦系统:粒⼦产⽣、死亡或碰撞。
Birth:该粒⼦系统中每个粒⼦产⽣时⽣成另⼀个粒⼦系统。
Death:该粒⼦系统中每个粒⼦死亡时⽣成另⼀个粒⼦系统。
Collision:该粒⼦系统中每个粒⼦碰撞时⽣成另⼀个粒⼦系统。
重要提⽰:需要使⽤碰撞模块 (Collision) 建⽴碰撞。
19、Texture sheet animation纹理层动画
在粒⼦⽣命周期内动画化uv坐标。按照从左到右,从上到下的顺序⼀次渲染,列是X轴,⾏是Y轴。
Tiles:贴图分块数,通过X和Y轴的切割来确定期望效果。
Animation:Whole Sheet(整图) Single Row(单⾏)
Random Row:随机⾏,。
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⼤图,设置为Basic即可按照通过命名来依次排序。另外,还可以使⽤ps的“⽂件➡⾃动➡联系表II”的功能来合成图⽚,注:不要选择拼合图层,否则会和⽩⾊背景层拼合在⼀起。
扩展:使⽤texture sheetanimation可以定位贴图,所以可以制作⼀些贴图合集,按照2次⽅的格⼦排列拼接成⼤图,这样很多粒⼦发射器可以共⽤⼀张贴图和材质球,可优化Drawcall。
20、Lights
可以将实时光附着在⼀部分粒⼦上。
Light:指定⼀个Light prefab。
Ratio:0-1,描述将接收光的粒⼦的⽐例。
Range multiplier:光线范围
Intensity Multiplier:光强度
Maxinum Lights:最⼤灯光数
21、Trails拖尾
为粒⼦系统添加拖尾的效果
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:拖尾的颜⾊。
22、⾃定义数据模块
“⾃定义数据”模块允许您在编辑器中定义⾃定义数据格式以附加到粒⼦。你也可以在脚本中设置它。
23、Renderer渲染模块
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替换的话,将出现粒⼦系统挂载两个材质的情况,但只显⽰了⼀种材质此时,想直接删除材质是删除不掉的,再使⽤上述拖⼊⽅式添加材质就可以只显⽰⼀个材质了。