本文主要是介绍unity 之 Particle 内置粒子系统二,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Emission module
这个模块影响发射速率和发射的时间
Properties
Property | Function |
---|---|
Rate over Time | 单位时间内发射的粒子数 |
Rate over Distance | 每移动一单位距离所发射的粒子数,就是粒子系统每移动单位距离就发射的粒子数,不移动不发射, 这对于模拟由物体运动产生的粒子非常有用(例如,来自汽车车轮上的灰尘 |
Bursts | 爆发是产生粒子的事件. 这些设置允许粒子在指定时间发射 |
Time | 设定时间(以秒为单位,在粒子系统开始播放后),在此时间发射爆炸。 |
Count | 发射的粒子数 |
Cycles | 设置一个值来播放爆裂的次数.,就是播放几次爆炸效果 |
Interval | 设置触发每个周期之间的时间(以秒为单位),和cycle对应,每个爆炸之间的间隔时间 |
Probability | 控制每个爆炸事件产生粒子的可能性.数值越大,系统产生的粒子越多, 值1保证系统产生粒子 |
Details
发射速率可以是恒定的,也可以根据曲线随系统的寿命而变化。如果 Rate over Distance 模式是活动的,一定数量的粒子被释放每单位距离由父对象移动. 这对于模拟由物体运动产生的粒子非常有用(例如,来自汽车车轮上的灰尘).
Rate over Time 是活动的,那么无论父对象如何移动,每秒都发射出所需的粒子数. 此外,您还可以添加在特定时间出现的额外粒子 (例如,蒸汽火车的烟囱会产生阵阵浓烟).
Shape Module
这个模块定义了粒子发射的体积或表面,和开始速度的方向. The Shape 属性定义了发射体的形状, 其余的模块属性取决于您选择的形状。
所有的形状(除了网格)都有定义其尺寸的属性, 比如Radius 要编辑这些,在场景视图中拖动线框发射器形状上的手柄,形状的选择会影响粒子发射的区域,还有粒子的初始方向.例如,一个球体向四面八方发射粒子, a Cone 放出一股发散的粒子流, and a Mesh网格向垂直于表面的方向发射粒子
Shapes in the Shape module
Sphere, Hemisphere:圆和半圆
Note: Sphere and Hemisphere have the same properties.
Property | Function |
---|---|
Shape | 发射体积的形状. |
Sphere | 所有方向的均匀粒子发射 |
Hemisphere | 半圆发射 |
Radius | 形状的半径 |
Radius Thickness | 放射粒子的体积的比例. 值0从形状的外表面发射粒子. 值1从整个体积释放出粒子.这个作用没怎么看出来 |
Texture | 一种纹理,用于着色和去除颗粒。这个贴图时发射形状的贴图。并不是粒子贴图 |
Clip Channel | 用于丢弃颗粒的纹理通道 |
Clip Threshold | 当将粒子映射到纹理上的位置时,丢弃任何 pixel color像素颜色低于此阈值的像素 |
Color affects Particles | 用纹理颜色乘以粒子颜色。 |
Alpha affects Particles | 粒子阿尔法乘以纹理阿尔法。 |
Bilinear Filtering | 线性过滤;读取纹理时,结合4个相邻的样本,使粒子颜色变化更平滑 |
Position | 发射形状的偏移 |
Rotation | 旋转 |
Scale | 缩放 |
Align to Direction | 根据粒子的初始运动方向确定粒子的方向。如果您想要模拟,例如,在碰撞过程中,大块的汽车油漆从汽车的车体上飞出,这是非常有用的。如果方向不令人满意,您还可以通过在主模块中应用一个Start Rotation值来覆盖它。 勾选上所有的粒子都很整齐,发射方向都是一样的 |
Randomize Direction | 向随机方向混合粒子方向。设置为0时,此设置无效。当设置为1时,粒子的方向完全是随机的。 |
Spherize Direction | 将粒子的方向混合成球面方向,他们从变形中心向外扩散. 设置为0时,此设置无. 当设置为1时,粒子方向从中心指向外(与形状设置为球体时相同)。 |
Randomize Position | 将粒子随机移动到指定的值. 此设置为0时,此设置无效。任何其他值都将对粒子的生成位置应用一些随机性 |
Cone
Arc | 圆的角部分,形成发射体的形状,一开始时360全方位发射,这个决定了反射源的角度 |
Mode | 定义如何统一产生粒子周围的弧形的形状. Random, Unity 在弧上随机生成粒子. Loop, Unity 有顺序的生成粒子,并在每个循环结束时循环回到起点. Ping-Pong is the same as Loop, 和循环是一样的,除了每个连续的循环发生在与最后一个相反的方向, Burst Spread 模式将粒子的产生均匀地分布在形状周围. 与默认的随机行为相比,这可以得到一个均匀的粒子分布, 粒子可能不均匀地聚集在一起的地方. Burst Spread i是 burst emissions. |
Spread | 可能产生粒子的弧周围的离散区间. 例如,0的值允许粒子在圆弧的任何地方出现, 而0.1的值只会在形状周围以10%的间隔产生粒子。 |
Speed | 发射位置在电弧周围移动的速度. |
Length | 圆锥的长度。这仅在Emit from:属性设置为Volume时才适用。 |
Emit from: | 发射粒子的圆锥部分: Base or Volume. |
Box
The shape module when set to Box mode
Box | 从盒子形状的边缘、表面或物体上发射粒子.粒子沿发射体的前进(Z)方向运动 |
Emit from: | 选择要从中发出的框的部分: Edge, Shell, or Volume. |
Randomize Position | Move particles by a random amount, up to the specified value. When this is set to 0, this setting has no effect. Any other value will apply some randomness to the spawning positions of the particles. |
Mesh, MeshRenderer, SkinnedMeshRenderer
形状模块设置为网格模式Mesh、MeshRenderer和SkinnedMeshRenderer具有相同的属性
Mesh | 从任何通过检查器提供的任意网格形状发射粒子 |
MeshRenderer | 发射粒子从一个参考游戏对象 的网格渲染器Emits particles from a reference to a GameObject’s Mesh Renderer |
SkinnedMeshRenderer | 释放粒子从一个参考游戏物体的Skinned Mesh Renderer蒙皮网格渲染器。. |
Type | 粒子从哪里发出. Vertex :顶点发出, Edge :边缘发出 Triangle :从三角形中发射出来 |
Mesh | 提供发射器形状的网格。 |
Single Material | 指定是否从特定的子网格发射粒子,由material index标识 ,如果启用,将出现一个数字字段,允许您指定material index number.。 |
Use Mesh Colors | 调整粒子的颜色与网格顶点的颜色,或者,如果它们不存在,使用材质的着色属性“color”或“TintColor”。 |
Normal Offset | 离网格表面发射粒子的距离(在表面法线方向) |
Mesh details
你可以从一个特定的子网格里发射粒子, Single Material
若要忽略网格的颜色,请检查“Use Mesh Colors”属性 property. 要从网格中读取纹理颜色,请将要读取的纹理分配给纹理属性。
Velocity over Lifetime module
The Velocity over Lifetime module allows you to control the velocity of particles over their lifetime.
Properties
Property | Function |
---|---|
Linear X, Y, Z | 粒子在X、Y、Z轴上的线速度. |
Space | X、Y、Z轴是指局部空间还是世界空间. |
Orbital X, Y, Z | 粒子绕X、Y、Z轴的轨道速度。 |
Offset X, Y, Z | 轨道中心的位置,用于绕轨道运行的粒子。 |
Radial | 粒子偏离中心位置的径向速度。. |
Speed Modifier | :对粒子的速度(沿其当前的运动方向)应用乘法器。 |
Details
要创建在特定方向上漂移的粒子,可以使用线性的X、Y和Z曲线。
用围绕中心位置旋转的粒子创造效果, 使用轨道速度值 Orbital 此外,您可以使用径向速度值推动粒子朝向或远离中心位置. Y您可以使用偏移值为每个粒子定义自定义旋转中心,Offset
You can also use this module to adjust the speed of the particles in the Particle System
without affecting their direction, by leaving all the above values at zero and only modifying the Speed Modifier value.
External Forces module
模拟风的效果 wind zones, Particle System Force Fields on particles emitted by the system.
Properties
Property | Function | |
---|---|---|
Multiplier | 风力的大小 | |
Influence Filter | 选择影响力的区域,是根据 Layer Mask 还是根据List | |
List | 定义一个能影响这个粒子系统的力场的显式列表 . This appears when the Influence Filter is set to List. | |
Influence Mask | 使用一个图层蒙版来确定哪个力场影响这个粒子系统. ,individually: |
Details
为了从这个特性中获得最好的结果,使用ParticleSystemForceFields组件创建单独的GameObjects。要想给粒子区域添加风,可以单独添加一个物体,挂上ParticleSystemForceField组件
Terrain 地形中加入风域可以影响树的移动,打开这个选项,以允许粒子接受风的影响. Multiplier 数值可以让你衡量风对粒子的影响,值越大,风力越大
Collision module
控制粒子在场景中的碰撞. type设置碰撞是在平面上还是在立体空间上发生 Planes or to the World
. World:需要选择是 2D or 3D world.
Planes module properties
Property | Function |
---|---|
Planes popup | Planes 模式. |
Planes | 定义碰撞平面的可扩展转换列表,就是可以碰撞的平面 |
Visualization | 碰撞平面的轴是否在场景中显示,是显示成网格还是固体 |
Scale Plane | 缩放碰撞面的大小 |
Dampen | 粒子碰撞到平面之后速度得衰减比例. |
Bounce | 碰撞之后的弹性 |
Lifetime Loss | 碰撞之后的生命周期得衰减 |
Min Kill Speed | 碰撞后小于这个速度得粒子将被销毁 |
Max Kill Speed | 碰撞之后大于这个速度得粒子将被销毁 |
Radius Scale | 允许您调整粒子碰撞球体的半径,使其更接近于粒子图形的视觉边缘。 |
Send Collision Messages | 执行挂在粒子物体上得脚本中得 OnParticleCollision 方法 |
Visualize Bounds | 在场景视图中以线框图的形式呈现每个粒子的碰撞边界。 |
World module properties
Property | Function |
---|---|
World popup | World .模式 |
Collision Mode | 3D or 2D. |
Collision Quality | 影响粒子穿过碰撞体数量,低质量消耗性能低,有时候粒子会穿过碰撞体 |
High | 高质量,实时检测粒子与碰撞体得碰撞 |
Medium (Static Colliders) | 请注意,此设置仅适用于从不移动的静态碰撞器。 |
Low (Static Colliders) | 请注意,此设置仅适用于从不移动的静态碰撞器。 |
Collides With | 粒子只会与选定层上的物体碰撞。. |
Max Collision Shapes | 粒子碰撞可以考虑多少种碰撞形状. 多余的形状被忽略,Terrain优先 |
Enable Dynamic Colliders | 允许粒子与动态对象发生碰撞(否则只使用静态对象) |
Enable Dynamic Colliders | Dynamic colliders是没有配置成运动学的 选中此选项以将这些碰撞器类型包含在粒子在碰撞中响应的对象集合中.取消此选项,粒子只对静态碰撞作出反应。 |
Voxel Size | 一个立体像素代表了三维空间上的一个值 . 当使用 Medium or Low quality collisions,Unity在网格结构中缓存碰撞. 这个设置决定了缓存区域的大小. 更小的值可以提供更高的精度,但是需要更多的内存,而且效率更低。 Note: You can only access this property when Collision Quality is set to Medium or Low. |
Collider Force | 在粒子碰撞后对物理对撞机施加一个力。这对于推动粒子碰撞是有用的 |
Multiply by Collision Angle | 在对撞机施加力时,根据粒子与对撞机的碰撞角来确定力的大小。擦射角产生的力比正面碰撞要小。 |
Multiply by Particle Speed | 当对碰撞体施加力时,根据粒子的速度调整力的强度。高速运动的粒子比低速运动的粒子产生更大的力。 |
Multiply by Particle Size | 当对碰撞体施加力时,根据粒子的大小调整力的强度。较大的粒子比较小的粒子产生更大的力。. |
Details
例如,水或碎片应该被一堵坚固的墙挡住,而不是简单地通过它. 启用碰撞模块后,粒子可以与场景中的物体发生碰撞。
选用world,粒子可以与场景中的任何collider发生碰撞. Planes 模式可以添加没有collider组件得物体发生碰撞(实时证明并不行). 这个选项对于简单的地板、墙壁和类似的对象很有用,并且比World模式的处理器开销更低。
Planes 模式时可以添加一组空物体,平面在对象的局部XZ平面上无限延伸,Y轴正方向表示平面的法向量
当允许碰撞时,一个粒子的大小有时会成为一个问题,因为当它与一个表面接触时,它的图形会被剪切. 这可能会导致一个粒子在停止或弹跳之前,在中途“下沉”到一个表面. Radius Scale property 通过为粒子定义一个近似的圆形半径来解决这个问题, 作为其实际大小的百分比. 这个大小信息是用来防止裁剪和避免下沉的。
Dampen and Bounce properties 当粒子代表固体时有用. 例如,砂砾在投掷时往往会从坚硬的表面反弹,而雪球的颗粒在碰撞中可能会失去速度. Lifetime Loss and Min Kill Speed 可以帮助减少碰撞后残留粒子的影响。例如,一个火球在空中飞行时可能持续几秒钟,但在碰撞后,分离的火粒子应该迅速消散。
Send Collision Messages该脚本可以附加到粒子系统的对象,或者有 Collider组件的那个物体,
World Collision Quality
Collision Quality property, 可以设置 High, Medium or Low. Medium (Static Colliders) or Low (Static Colliders), 使用 voxels(values on a 3D grid) 缓存之前的碰撞,以便重复使用.
这个缓存由每个体素中的一个平面组成, 平面表示那个位置的碰撞面. 在每一帧中,Unity检查在粒子位置的一个平面的缓存,如果有的话, Unity 使用 collision detection. 否则,它请求物理系统,如果返回碰撞,将碰撞添加到缓存中,以便在后续帧上快速查询。
这是一个近似值, 所以可能会发生一些遗漏的碰撞.您可以减少体素大小值来帮助解决这个问题;但是,这样做会占用额外的内存,而且效率更低。
Medium and Low得唯一不同是系统每帧允许查询物理系统的次数,Low每帧的查询比Medium少. 一旦超出了每帧的预算,只有缓存用于任何剩余的粒子. 这可能导致丢失冲突的增加,直到缓存被更全面地填充。
Triggers module
粒子系统有能力在与场景中的一个或多个碰撞器交互时触发回调,当粒子进入,退出或者在碰撞体内部时会触发回调函数
当粒子进入碰撞器时,可以使用回调作为销毁粒子的简单方法 (例如,防止雨滴穿透屋顶),或者它可以用来改变任何或所有粒子的属性。没必要勾选istrigger
触发器模块还提供了自动清除粒子的Kill选项,以及忽略碰撞事件的选项
Property: | Function: |
---|---|
Inside | 进入 Collider内部时调用. |
Outside | 在碰撞体外部调用 |
Enter | 进入时调用 |
Exit | 退出时调用 |
Radius Scale | :这个参数设置粒子的碰撞边界允许事件在粒子接触对撞机之前或之后发生.例如,你可能想让一个粒子在弹回之前穿透对撞机物体的表面,在这种情况下,可以将半径范围设置为略小于1. 请注意,当事件实际触发时,此设置不会更改,但可以延迟或提前触发的视觉效果。 - 输入1,使事件看起来是在粒子接触对撞机时发生的 - 输入一个小于1的值,使触发器看起来是在粒子穿透对撞机后发生的 - 输入一个大于1的值,使触发器看起来是在粒子穿透对撞机后发生的 |
Visualize Bounds | This allows you to display the Particle’s Collider bounds in the Editor window. |
如果使用自己定义的回调函数得话, 使用 ParticlePhysicsExtensions.GetTriggerParticles() (along with the ParticleSystemTriggerEventType you want to specify)
using UnityEngine;
using System.Collections;
using System.Collections.Generic;[ExecuteInEditMode]
public class TriggerScript : MonoBehaviour
{ParticleSystem ps;// these lists are used to contain the particles which match// the trigger conditions each frame.List<ParticleSystem.Particle> enter = new List<ParticleSystem.Particle>();List<ParticleSystem.Particle> exit = new List<ParticleSystem.Particle>();void OnEnable(){ps = GetComponent<ParticleSystem>();}void OnParticleTrigger(){// get the particles which matched the trigger conditions this frameint numEnter = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Enter, enter);int numExit = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Exit, exit);// iterate through the particles which entered the trigger and make them redfor (int i = 0; i < numEnter; i++){ParticleSystem.Particle p = enter[i];p.startColor = new Color32(255, 0, 0, 255);enter[i] = p;}// iterate through the particles which exited the trigger and make them greenfor (int i = 0; i < numExit; i++){ParticleSystem.Particle p = exit[i];p.startColor = new Color32(0, 255, 0, 255);exit[i] = p;}// re-assign the modified particles back into the particle systemps.SetTriggerParticles(ParticleSystemTriggerEventType.Enter, enter);ps.SetTriggerParticles(ParticleSystemTriggerEventType.Exit, exit);}
}
这个给粒子的材质还得是particle下的shader 普通的shader还不行
Sub Emitters module
此模块允许您设置子发射器。这些是额外的粒子发射器,是在粒子生命的某些阶段,在其位置上产生的。.
Properties
Property | Function |
---|---|
Sub Emitters | 配置子发射器列表,选择它们的触发条件以及它们从父粒子继承的属性。 |
Details
许多类型的粒子在其寿命的不同阶段产生影响,也可以使用粒子系统来实现
例如,一颗子弹离开枪管时可能会伴随着一股烟雾粉末,火球在撞击时可能会爆炸。您可以使用子发射器来创建这样的效果。
子发射器是在场景中或预制件中创建的普通粒子系统对象. 这意味着次级发射器可以有自己的次级发射器 (这种布局可以用于复杂的效果,如烟花).然而,很容易产生大量的粒子使用亚发射器,这可以是资源密集型。
要触发一个次级发射器,你可以使用以下条件:
- Birth: 当粒子被创造出来的时候.
- Collision: 当粒子发生碰撞时.
- Death: 当粒子被销毁时
- Trigger: 当粒子出发碰撞器时 collider.
- Manual: 通过脚本触发. See ParticleSystem.TriggerSubEmitter.
Collision, Trigger, Death and Manual 在 Emission module中只能使用 burst 发射.
此外,可以使用Inherit选项将属性从父粒子传输到每个新创建的粒子.可以继承size, rotation, color and lifetime.使用 Inherit Velocity模块继承速度
也可以配置子发射器事件触发的概率,通过设置Emit Probability . 1确保事件将触发,而较低的值将降低概率。
Particle System Force Field
Particle System Force Field 组件是给粒子系统添加一个外力,把这个组件添加到粒子系统上, 要使用这个,把 External Forces Module 打开
Properties
使用 Particle System Force Field 组件添加不同类型的力
所有类型的力都是应用到局部空间上.例如,旋转Transform影响方向和旋转属性。
Property | Function | |
---|---|---|
Shape | ||
Shape | 选择风力区域得类型 | |
Start Range | 设置风力区域内部开始的点 | |
End Range | 设置风力区域外部终结得点 | |
Direction X, Y and Z | 设置一个沿x轴、y轴和z轴作用于粒子的线性力,值越大,力越大. You can specify a constant force or vary the force over time. See Varying properties over time documentation for more information. | |
Gravity | ||
Strength | 设置风力区域对粒子吸引力的大小,就像一个漩涡一样,值越大,对粒子的吸引力越大. You can specify a constant strength or vary the strength over time. For more informtion, see Varying properties over time documentation. | |
Gravity Focus | 设置中心对粒子的吸引力.0表示将粒子吸引到形状的中心,1将粒子吸引到形状的外边缘。 | |
Rotation | ||
Speed | 设定粒子系统的速度,使粒子在力场的中心涡旋周围运动,值越高,速度越快. You can specify a constant speed or vary the speed over time. For more information, see the Varying properties over time documentation. | |
Attraction | 设置粒子被卷入旋涡运动的强度. 值1表示最大的吸引力,值0表示没有吸引力. | |
Rotation Randomness | 设置形状的随机轴来推动粒子.值1应用最大随机性,值0不应用任何随机性。 | |
Drag | ||
Strength | 设置拖拽效果的强度,使粒子减速 | |
Multiply Drag by Size | 粒子越大,拖拽里越大 | |
Multiply Drag by Velocity | 速度越大,拖拽里越大 | |
Vector Field | ||
Volume Texture | 设置风力区域的贴图 | |
Speed | 对通过风力区域的粒子进行叠加一个速度 The higher the value, the faster the speed. You can specify a constant strength or vary the strength over time. See Varying properties over time. | |
Attraction | 给通过风力区域的粒子添加一个力,让他们往中心靠拢 See Varying properties over time. |
这篇关于unity 之 Particle 内置粒子系统二的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!