了解粒子发射以及 Unity 如何通过粒子系统模块管理粒子发射。
根据曲线,发射速率可以是恒定的,也可以在系统的生命周期内变化。如果激活发射模块随移动距离产生的粒子数 (Rate over Distance) 模式,则父对象移动的每个距离单位将释放一定数量的粒子。此模式对于模拟实际由对象运动产生的粒子非常有用(例如,泥路上车轮留下的尘土)。
如果激活__随单位时间产生的粒子数 (Rate over Time)__ 模式,则无论父对象如何移动,每秒都会发射所需数量的粒子。此外,还可添加在特定时间出现的额外粒子爆发(例如,蒸汽火车烟囱产生一股股的烟雾)。
形状 (Shape) 模块用于定义可发射粒子的体积或表面以及起始速度的方向。形状 (Shape) 属性定义发射体积的形状,其余模块属性根据您选择的形状 (Shape) 值而变化。
所有形状(网格 (Mesh) 除外)都具有定义其大小的属性,例如__半径 (Radius)__ 属性。要编辑这些属性,请在场景视图中拖动线框发射器形状上的控制柄。形状的选择会影响可发射粒子的区域,但也会影响粒子的初始方向。例如,__球体 (Sphere)__ 向外向各个方向发射粒子,__锥体 (Cone)__ 发射发散的粒子流,而__网格 (Mesh)__ 在垂直于表面的方向上发射粒子。
您可以通过选中__单一材质 (Single Material)__ 属性来选择仅从特定材质(子网格)发射粒子,并可通过选中__法线偏移 (Normal Offset)__ 属性来沿着网格法线偏移发射位置。
要忽略网格的颜色,请选中__使用网格颜色 (Use Mesh Colors)__ 属性。要从网格读取纹理颜色,请将要读取的纹理分配给__纹理 (Texture)__ 属性。
网格必须设置为“读/写启用”才能在粒子系统上工作。如果在编辑器中分配网格,Unity 会为您进行此处理。但如果要在运行时分配不同的网格,则需要选中__导入设置 (Import Settings)__ 中的读/写启用 (Read/Write Enabled) 设置。
模式 (Mode) 属性允许粒子系统以可预测的顺序在网格表面上发射粒子。从顶点发射时,此属性允许从网格顶点数组中的下一个顶点发射每个新粒子。从边缘发射时,粒子系统可以沿着网格的三角形/线条的边缘平滑地发射粒子。
基于发射器速度的生存期 (Lifetime by Emitter Speed) 根据粒子生成时发射器的速度控制每个粒子的初始生命周期。它将粒子的初始生命周期乘以一个值,该值取决于产生它们的对象的速度。对于大多数粒子系统,此为游戏对象速度,但对于子发射器,速度来自子发射器粒子所源自的父粒子。
许多类型的粒子都会在其生命周期的不同阶段产生一些效果,而这也可使用粒子系统子发射器来实现。例如,子弹离开枪管时可能伴随着一缕烟尘,火球可能会在撞击时爆炸。您可以使用子发射器来创建诸如此类的效果。
子发射器是在场景中创建的或来自预制件的普通粒子系统对象。这意味着子发射器还可以有自己的子发射器(这种类型的布置对于像烟花这样的复杂效果很有用)。但是,虽然使用子发射器生成大量粒子非常容易,但这可能非常耗费资源。
要触发子发射器,可使用以下条件:
请注意,__碰撞 (Collision)、触发 (Trigger)、死亡 (Death)__ 和__手动 (Manual)__ 事件只能使用发射 (Emission) 模块中的爆发发射。
此外,还可使用__继承 (Inherit)__ 选项将属性从父粒子转移到每个新创建的粒子。可转移属性包括大小、旋转、颜色和生命周期。要控制速度的继承方式,请在子发射器系统上配置继承速度 (Inherit Velocity) 模块。
还可以通过设置__发射概率 (Emit Probability)__ 属性来配置子发射器事件的触发概率。值为 1 可以保证事件将触发,而更小的值则会降低概率。