Unity 粒子特效(下)

发布于:2024-07-03 ⋅ 阅读:(14) ⋅ 点赞:(0)

11、Size over Lifetime(生命周期内大小)

  • 主要用于定义粒子从发射到消亡的整个生命周期内,其大小如何随时间发生变化。通过该模块,可以创建出如烟雾扩散、火焰膨胀等。
  • Separate Axes:当勾选此选项时,可以分别控制粒子在X轴、Y轴和Z轴上的大小变化。这允许实现非均匀缩放效果,如粒子在水平方向上扩散而在垂直方向上保持不变。
    注意:Z轴的控制仅对网格粒子有效。
  • Size:用于定义粒子大小随时间变化的规律,通过调整曲线可以实现逐渐增大、先大后小等不通的变化效果。
  • 烟雾效果:可以将曲线设置为向上坡道,使粒子在生命周期内逐渐增大,以模拟烟雾扩散的过程。
  • 火焰效果:可以设置为先上升后下降得驼峰曲线。这可以模拟火焰粒子在发射后膨胀并在后期随着燃料用尽而逐渐消散得过程。
  • 爆炸效果:粒子的大小可能需要在短时间内迅速增大并随后消散。
    12、Size by Speed(速度决定大小)
  • 可以根据粒子的速度来改变粒子的大小,可以模拟如爆炸时小碎片速度更快而大碎片则速度较慢。
  • Separate Axes:勾选后单独设置XYZ方向的大小变化。
  • Size:根据曲线设置大小。
  • Speed Ranage:速度范围
    13、Rotation over Lifetime(生命周期内粒子旋转)
  • Separate Axes(分离轴)
    当勾选此选项时,可以分别为X、Y、Z轴设置不同的旋转速度和曲线。这允许开发者实现更复杂的旋转效果,如粒子在旋转时同时绕不同轴旋转。
  • Angular Velocity(角速度)
  • -Constant(恒定):设置粒子每秒钟的恒定旋转速度(以度/秒为单位)。这会导致所有粒子以相同的速度旋转。
  • -Curve(曲线):通过曲线编辑器设置粒子在整个生命周期内的旋转速度变化。开发者可以定义一个或多个关键帧,以控制旋转速度如何随时间变化。
  • -Random Between Two Constants(两个常数之间的随机值):设置两个角速度值,粒子将在这两个值之间随机选择旋转速度。
  • -Random Between Two Curves(两条曲线之间的随机值):类似于Curve选项,但允许定义两条曲线,粒子将在这两条曲线之间随机选择旋转速度的变化轨迹。
  • 爆炸碎片:在模拟爆炸是碎片在飞行过程中旋转。
  • 当粒子用于模拟轨迹(如导弹尾迹)时,可以确保轨迹在视觉上保持连续性和方向性。
    14、Rotation by Speed(速度旋转模块)
  • Separate Axes(分离轴):当勾选此选项时,可以分别为X、Y、Z轴设置不同的旋转速度和速度范围。这允许实现更复杂的旋转效果,如粒子在移动时绕不同轴旋转。
  • Angular Velocity(旋转速度):旋转速度的基准值或曲线,表示粒子在特定速度下的旋转速度。这可以是一个恒定的值,也可以是通过曲线编辑器定义的随时间变化的值。
  • Speed Range(速度范围)定义了一个速度区间,该区间内的粒子速度将被映射到Angular Velocity所定义的旋转速度上。速度范围的下限和上限决定了哪些速度的粒子将受到Rotation by Speed模块的影响。
  • 风吹效果:随着风力增强,粒子移动速度会增加,旋转速度也增加,模拟风吹动粒子的效果
    14、External Forces(外力)
  • 通过与Force Field(力场)组件配合使用,模拟外部力(如风、重力、涡流等)对粒子系统发射的粒子的影响。这些力可以改变粒子的运动轨迹、速度、旋转等属性,从而创造出更加复杂和逼真的粒子效果。
  • Multiplier(乘数)
    控制施加到粒子系统上的力的强度。值为1时,表示全部施加;值为0时,表示不施加。
  • Influence Filter(影响过滤器)
    选择通过何种方式控制力场对粒子的影响。通常有两种方式:
  • -Layer Mask(层遮罩):通过层的方式选择力场对哪一层生效。
  • -List(列表):通过显式列表确定哪些力场对当前粒子系统生效。
  • Force Field(力场)组件参数
  • 当与External Forces模块配合使用时,Force Field组件提供了多种力场类型,如引力、涡流等,每个类型都有其特定的参数设置:
  • 引力(Gravity):
  • -Strength(强度):设置引力中心点对粒子的吸引力,值越高,强度越大。
  • -Focus(焦点):设置引力中心点,值为0时位于形状中心处,值为1时位于形状外边缘。
    涡流(Rotation):
  • -Speed(速度):设置粒子围绕涡流的速度,值越高,速度越快。
  • -Attraction(吸引力):设置粒子被拖入涡流的强度,值为1时最大,值为0时不应用任何吸引力。
  • -Randomness(随机性):设置形状的随机轴以推动粒子四处移动,值为1时表示最大随机性,值为0时不应用随机性。
  • 风效果:通过设置漩涡或类似风力效果,可以模拟风吹动粒子(如树叶、雪花等)。
  • 重力效果:可以模拟粒子在重力作用下的下落(如雨、雪等)。
    15、Noise(噪波)
  • 为粒子添加随机化效果,可以模拟出更加自然和动态的粒子效果,如泡泡在空气中飘荡、雪花飘落、尘土飞扬等。
  • Strength(强度):控制噪声对粒子影响的整体强度。值越高,粒子受噪声影响越大,波动起伏程度也越大。
    可以为X、Y、Z轴分别设置不同的强度值,以实现更精细的控制。
  • Frequency(频率):控制粒子改变行进方向的频率以及方向变化的突然程度。
    低值会产生柔和、平滑的噪声效果,而高值会产生快速变化的噪声效果。
  • Scroll Speed(滚动速度):控制噪声图的移动速度,进而影响粒子的不稳定性和不可预测性。
    值越高,噪声图滚动越快,粒子运动轨迹越不稳定。
  • Damping(阻尼):若启用,则噪声的强度与频率成正比。这有助于在保持相同行为但具有不同大小的同时缩放噪声场。
  • Octaves(倍率):通过重叠噪声图来产生最终噪声效果。默认值为1,即仅使用一层噪声图。
    增加Octaves值会增加性能消耗,但也会使噪声效果更加丰富和细腻。
  • Octave Multiplier(倍率乘数):当Octaves不为1时启用,表示对每个噪声层按此比例降低强度。
  • Octave Scale(倍率缩放):当Octaves不为1时启用,表示对每个噪声层按此乘数调整频率。
  • Quality(质量):控制噪声的生成质量。可选值包括低、中、高。
    低质量设置可显著降低性能成本,但也会影响噪声的丰富度和细节。
  • Remap(重新映射):将最终噪声值重新映射到不同的范围,以进一步调整噪声效果。
  • Position Amount(位置量):控制噪声对粒子位置影响程度的乘数。值越大,噪声对粒子位置的影响越明显。
  • Rotation Amount(旋转量):控制噪声对粒子旋转(以度/秒为单位)影响程度的乘数。值越大,粒子受噪声影响旋转越快。
  • Size Amount(尺寸量):控制噪声对粒子大小影响程度的乘数。值越大,粒子受噪声影响尺寸变化越明显。
    16、Collision(碰撞)
  • 用于模拟与场景中物体发生碰撞
  • Collision模块提供了两种主要模式:Planes和World。
  • -Planes模式:用于定义碰撞平面的变换。这种模式比World模式节省计算量,因为它仅能对平面产生一个碰撞。
    适用于简易场景,如地板、墙壁等。Planes是可叠加的,不是只能设置一块。
    在Planes模式下,可以通过可视化选项(如Visualization)将碰撞平面在Scene视图中显示为线框网格或实体平面,并调整其大小(Scale Plane)。
  • -World模式:允许粒子与世界中的所有物体碰撞。
    可以通过Collision Mode下拉选单定义碰撞是应用于2D还是3D世界。
    在World模式下,可以设置更详细的碰撞参数,如Dampen(碰撞后损失的速度比例)、Bounce(碰撞后反弹的速度比例)、Lifetime Loss(碰撞后损失的总生命周期比例)等。
  • 关键参数
  • Collision Quality:控制粒子碰撞的质量,影响有多少粒子可以穿过碰撞体。
    可选值包括High、Medium (Static Colliders)、Low (Static Colliders)。
  • -High:碰撞始终使用物理系统来检测碰撞结果,最准确但最耗费资源。
  • -Medium (Static Colliders):使用一组体素来缓存先前的碰撞,适用于静态碰撞体,计算资源消耗适中。
  • -Low (Static Colliders):与Medium类似,但每帧查询物理系统的次数更少,计算资源消耗最少。
  • Collides With:定义粒子只会与哪些层上的对象发生碰撞。这有助于控制粒子与特定类型对象的交互。
  • Enable Dynamic Colliders:当选中时,粒子也可以与动态对象碰撞(否则仅与静态对象碰撞)。这对于需要粒子与动态场景交互的效果特别有用。
  • Voxel Size:在使用Medium或Low质量碰撞时,Unity会在网格结构中缓存碰撞。Voxel Size控制着网格大小,较小的值提供更高的准确性但占用更多内存。
  • Collider Force:控制粒子碰撞后对物理碰撞体施加的力。这对于用粒子推动碰撞体非常有用。
    可以根据碰撞角度(Multiply by Collision Angle)、粒子速度(Multiply by Particle Speed)和粒子大小(Multiply by Particle Size)来缩放力的强度。
  • Send Collision Messages:如果启用,则允许从脚本中通过OnParticleCollision函数检测粒子碰撞。这提供了对粒子碰撞事件的编程控制。
  • 通过调整参数,可实现粒子与物体之间的反弹、消失、推动等效果。
    17、Triggers
  • Triggers模块通过监听粒子与碰撞体之间的交互事件(如进入、离开、在内部、在外部等),来触发特定的操作或回调。这些操作可以包括访问粒子列表、修改粒子属性、销毁粒子等。
  • 指定碰撞体:首先,需要指定粒子可以与场景中的哪些碰撞体进行交互。这可以通过将碰撞体添加到Triggers模块的Colliders列表中实现。
    可以添加一个或多个碰撞体,并通过Add (+)和Remove (-)按钮来管理列表中的碰撞体。
    Triggers模块提供了四种事件类型来描述粒子与碰撞体的相互作用:
  • -Inside:粒子在碰撞体的边界内。
  • -Outside:粒子在碰撞体的边界外。
  • -Enter:粒子进入碰撞体的边界。
  • -Exit:粒子退出碰撞体的边界。
    对于每种事件类型,可以在Inspector中设置当粒子满足该事件条件时将执行的操作,包括Callback(在回调函数中访问粒子)、Kill(销毁粒子)和Ignore(忽略粒子)。
  • Radius Scale:此参数用于设置粒子的碰撞体边界,以便更紧密地将粒子的碰撞体边界匹配到粒子的视觉外观。
    输入1表示事件在粒子接触碰撞体时发生;输入小于1的值表示触发器在粒子穿透碰撞体之前发生;输入大于1的值表示触发器在粒子穿透碰撞体之后发生。
  • Visualize Bounds:此设置用于指示是否在Scene视图中显示每个粒子的碰撞体边界。启用此属性可帮助开发者直观地看到粒子的碰撞体边界。
  • Collider Query Mode:通过此参数控制可以获得哪些关于粒子与碰撞体交互的信息。可选值包括Disabled(不获取任何信息)、One(获取与每个粒子交互的第一个碰撞体的信息)和All(获取与每个粒子交互的每个碰撞体的信息)。
  • Triggers模块应用于需要粒子与场景中物体有复杂交互的粒子效果中,如:
  • -雨滴落在地面或窗户上时的效果。
  • -火焰与障碍物交互时的动态效果。
  • -爆炸时碎片与周围环境的交互。
  • Triggers在回调中访问和修改粒子。
    ParticleSystem ps;
    List<ParticleSystem.Particle> ListParticles = new List<ParticleSystem.Particle>();

    void Start()
    {
        ps = GetComponent<ParticleSystem>();
    }

    void OnParticleTrigger()
    {
        // 获取进入碰撞体的粒子  需要将Enter修改为Callback
        int num = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Enter, ListParticles);

        // 遍历这些粒子并修改它们的属性(例如颜色)  
        for (int i = 0; i < num; i++)
        {
            ParticleSystem.Particle p = ListParticles[i];
            p.startColor = new Color(0, 0, 0, 1); // 设置为黑色 
            ListParticles[i] = p;
        }

        // 将修改后的粒子重新分配回粒子系统  
        ps.SetTriggerParticles(ParticleSystemTriggerEventType.Enter, ListParticles);
    }

18、Sub Emitters(子发射器)

  • 允许在粒子生命周期的特定阶段创建附加的粒子发射器,这些子发射器可以在粒子的出生、消亡、碰撞等时刻生成其它粒子。
  • Sub Emitters模块提供了多种触发条件,用于控制子发射器的激活时机:
  • -Birth:粒子的创建时间。
  • -Collision:粒子与对象发生碰撞的时间。
  • -Death:粒子的销毁时间。
  • -Trigger:粒子与触发碰撞体相互作用的时间。
  • -Manual:仅在通过脚本进行请求时触发。
    请注意,Collision、Trigger、Death和Manual事件只能使用- - Emission模块中的爆发发射。
  • Emit Probability:用于配置子发射器事件的触发概率。
  • 可从父粒子继承多种属性,如大小、旋转、颜色、生命周期等。
  • 示例:
  • -子弹效果:子弹离开枪管时,可以使用子发射器生成一缕- 烟尘效果。
  • -爆炸效果:火球撞击目标时,可以使用子发射器生成爆炸碎片和火焰效果。
  • -烟花效果:在烟花粒子系统中,子发射器可以生成多层级的粒子效果,模拟烟花的复杂爆炸过程。
    19、Texture Sheet Animation(纹理动画)
  • 可将一组纹理视为动画帧进行播放,用于设置粒子生命周期中的贴图动画。
  • Grid模式:将粒子材质分割成多张图片进行控制播放
  • -Tiles:纹理在水平和垂直方向上划分的区块数量,决定了动画帧的数量。
  • -Animation:指定动画帧的播放方式,如Whole Sheet(整页作为一个动画序列)、Single Row(每一行代表一个单独的动画序列)等。
  • Sprites模式:可设置多张图片。
  • TimeMode:设置动画变化方式,时间、速度、FPS。
  • Cycles:动画序列在粒子整个生命周期中重复的次数。
  • 示例:
  • 火焰:将火焰纹理分割成多个帧,模拟火焰的跳动和闪烁。
  • 水流:将水流纹理分割成多个帧,模拟水流效果。
  • 爆炸:用来播放在爆炸瞬间的火焰和碎片动画。
    20、Lights(光照)
  • Light Prefab:指定用于粒子光照的光照预制件。这个预制件定义了光照的颜色、强度、范围等属性。决定了粒子光照的外观和效果。
  • Ratio:一个介于0和1之间的值,表示将接受光照的粒子的比例。
    较高的值会增加粒子接受光照的概率。
    设置为0时,没有粒子会接受光照。
    设置为1时,所有粒子都会接受光照。
  • Random Distribution:控制光照是否随机分配给粒子。
    设置为True时,每个粒子都有根据Ratio值随机接受光照的机会。
    设置为False时,由Ratio控制新创建的粒子接受光照的频率(例如,每第N个粒子将接受光照)。
  • Use Particle Color:控制光照的最终颜色是否通过其附加到的粒子的颜色进行调制。
    设置为True时,光照的颜色会根据粒子的颜色进行调整。
    设置为False时,光照将使用其自身的颜色而不受粒子颜色的影响。
  • Size Affects Range 和 Alpha Affects Intensity:分别控制粒子的大小和Alpha值是否影响光照的范围和强度。
    当启用Size Affects Range时,光照的范围将受到粒子大小的影响。
    当启用Alpha Affects Intensity时,光照的强度将受到粒子Alpha值的影响。
  • Range Multiplier 和 Intensity Multiplier:分别用于在粒子的生命周期内将自定义乘数应用于光照的范围和强度。
  • Maximum Lights:用于限制创建的光照数量,以防止意外创建大量光照导致的性能问题。
  • 示例:如火灾、烟花、闪电中,通过为粒子添加实时光照,使得效果更逼真。
    21、Trails(拖尾)
  • Ratio:拖尾效果的粒子比例,取值范围为0到1。
  • Lifetime:拖尾中每个顶点的生命周期,决定了拖尾效果的持续时间。
  • Minimum Vertex Distance:较小的值会使拖尾效果更加平滑,但可能会增加性能消耗;较大的值则会使拖尾效果变得粗糙。
  • World Space:拖尾顶点将被置于世界空间中,并忽略粒子系统的任何移动。决定了拖尾效果是否随粒子系统一起移动或保持在世界空间中的固定位置。
  • Die With Particles:拖尾是否在粒子死亡时立即消失,决定了拖尾效果的消失时机,是否与粒子同步。
  • Texture Mode:选择应用于拖尾的纹理模式,可以是拉伸(Stretch)或平铺(Tile)。
  • Size affects Width 和 Size affects Lifetime:分别控制粒子大小是否影响拖尾的宽度和生命周期。拖尾的宽度和生命周期将随粒子大小的变化而变化。
  • Inherit Particle Color:控制拖尾是否继承粒子的颜色。
  • Color over Lifetime 和 Width over Trail:分别控制拖尾在其附着粒子的整个生命周期内的颜色和宽度变化。
    22、custom data
  • 自定义数据格式。
    23、Renderer(渲染)
  • Render Mode
  • Billboard:粒子始终面向摄像机,适用于模拟如火焰、烟雾等效果。
    Stretched Billboard:粒子在面向摄像机的同时进行拉伸,适合模拟如雨水下落等具有速度感的效果。
    Horizontal Billboard:粒子水平设置,适用于特定方向的粒子效果。
    Vertical Billboard:粒子垂直设置,同样适用于特定方向的粒子效果。
    Mesh:使用网格来定义粒子的形状,适用于需要复杂3D形状的粒子效果。
    Sorting Mode
    None:不进行排序,粒子渲染顺序由它们在场景中的位置决定。
    Distance:根据粒子与摄像机的距离进行排序,较近的粒子先渲染。
    Camera Depth:基于摄像机深度缓冲区进行排序,通常用于解决透明粒子渲染时的深度问题。