Unity 粒子系统(Particle System) (二)Velocity over Lifetime,Inhert Velocity,Force voer Lifetime等属性详解

点击这里看上篇!!

Velocity over Lifetime module生命周期速度模块

 Velocity over Lifetime允许你控制粒子在它们的生命周期中的速度。可以模拟类似拖动的效果。若粒子的速度超过设定的限定值,则粒子速度之会被锁定到该限定值。

属性

PropertyFunction
X, Y, ZX,Y和Z轴的速度。
Space选择X、Y和Z轴是否指向本地或世界空间。
Speed Modifier沿粒子的当前行进方向对粒子的速度应用乘数。

细节

要创建在特定方向漂移的粒子,请使用X,Y和Z曲线。

要创建调整粒子速度的效果,但不影响每个粒子在哪个方向移动,请使用“ Speed Modifier曲线。

Noise module

使用此模块设置粒子类似跳动的效果(PS:大家可以想象小时候玩的喇叭,上面放点沙子,然后给喇叭通电,可以看到沙子不停的在跳动)。

属性

PropertyFunction
Separate Axes(分开的轴) 控制强度,并在每个轴上独立进行重新映射。(PS:制造粒子跳动的效果,前提是X,Y,Z轴不为0的情况下)
Strength(强度)这条曲线定义了noise效应对粒子一生的影响。数值越高粒子移动得越来越快。
Frequency(频率低值会产生柔和平滑的noise,高值会产生快速变化的noise。这就控制了粒子改变它们行进方向的频率,以及这些方向的改变是多么的突然。( Low values create soft, smooth noise, and high values create rapidly changing noise. This controls how often the particles change their direction of travel, and how abrupt those changes of direction are.)
Scroll Speed(滚动速度)随着时间的推移,移动noise,导致更难以预测和不稳定的粒子运动。
Damping(减震启用时,强度与频率成正比。将这些值捆绑在一起意味着可以在保持相同的行为的同时缩放噪声场,但是具有不同的尺寸。
Octaves(倍频指定有多少层重叠的噪音被组合在一起产生最终的噪音值。不建议使用,过多的使用会影响xingnen
Octave Multiplier倍频乘法器
按此比例降低强度。  Octave Scale(八度音阶 通过该乘法器调整频率。 Quality(质量质量越低性能消耗越低,noise外观质量也越低,反之性能消耗高,外观质量也越高 Remap(重映射 将最终的噪音值重新映射到不同的范围。 Remap Curve(重新映射曲线 描述最终噪声值如何转换的曲线。 例如,您可以使用此选项来选取噪声字段的较低范围,并通过创建一个从高到低结束于零的曲线来忽略较高范围。(The curve that describes how the final noise values are transformed. For example, you could use this to pick out the lower ranges of the noise field and ignore the higher ranges by creating a curve that starts high and ends at zero. Position Amount(职位数量 控制噪声影响粒子位置的乘法器。 Rotation Amount(旋转量 控制噪声影响粒子旋转量的乘法器,以度/秒为单位。 Size Amount(数量大小) 控制噪声影响粒子大小的乘法器。

细节

给你的粒子添加噪音是创造有趣的模式和效果的简单而有效的方法。例如,想象一下火焰中的余烬是如何移动的,或者烟雾在移动时如何旋转。强烈的高频噪声可以用来模拟火焰余烬,而软的低频噪声则更适合模拟烟雾效应。

为了最大限度地控制噪音,您可以启用分离轴选项。这使您可以独立控制每个轴上的强度和重新映射。

所使用的噪声算法基于一种叫做“卷曲噪声”的技术,该技术在内部使用多个柏林噪声样本来创建最终的噪声场。

质量设置控制生成多少个独特的噪声样本。使用“中”和“低”时,会使用较少的Perlin噪声样本,并且这些样本将在多个轴上重复使用,但会以一种方式组合以尝试隐藏重用。这意味着使用较低质量的设置时,噪音可能看起来不那么动态和多样化。但是,使用较低质量的设置时会有显着的性能优势。

Limit Velocity Over Lifetime module(限制生命周期中的速度

这个模块控制粒子的速度在整个生命周期内如何降低。

属性

PropertyFunction
Separate Axes(分开的轴  将轴分成X,Y和Z两个独立的组件。
Speed(速度设置粒子的速度限制。
Space(空间选择速度限制是指本地还是世界空间。此选项仅在启用“ Separate Axes ”时可用。
Dampen(挫伤超过速度限制时,粒子速度降低的部分。
Drag(挫伤超过速度限制时,粒子速度降低的部分。
Multiply by Size(乘以大小较大的粒子受阻力系数影响较大。
Multiply by Velocity(乘以速度更快的粒子受阻力系数影响更大。

细节

这个模块对于模拟减缓颗粒的空气阻力是非常有用的,特别是当降低曲线用于降低速度限制时。例如,一场爆炸或烟火最初以极快的速度爆发,但是当它们通过空气时,它所发射的粒子迅速减速。

Drag 选项通过提供选项,应用基于粒子的大小和速度不同量的阻力提供了空气阻力更精确物理模拟。


Inherit Velocity module(继承速率模块)

这个模块控制粒子速度随着时间的推移如何对父对象移动。

属性

Property Function
Mode指定发射器速度如何应用于粒子
Current(当前)发射器的当前速度将被应用于每一帧的所有粒子。例如,如果发射器减速,所有的粒子也将减速。
Initial(初始)  当每个粒子诞生时,发射器的速度将被施加一次。粒子诞生后发射器速度的任何变化都不会影响粒子。
Multiplier粒子应该继承的发射器速度的比例。

细节

这种效果对于从运动物体发射粒子非常有用,例如来自汽车的尘埃云,来自火箭的烟雾,来自蒸汽火车烟囱的蒸汽,或者粒子最初应以速度的百分比他们似乎来自的对象。当模块Simulation Space 被设置为World 时,该模块仅对粒子有影响

也可以使用曲线来影响随时间的影响。例如,您可以对新创建的粒子应用强大的吸引力,这会随着时间的推移而减少。这对于蒸汽火车烟雾可能是有用的,它会随着时间的推移慢慢地漂移,并停止在火车排放之后。

Force Over Lifetime module(强制终生模块

粒子可以通过本模块中指定的力(如风或吸引力)加速。

属性
PropertyFunction
X, Y, Z施加在X,Y和Z轴上的每个粒子的力。
Space选择力量是在本地还是在世界空间中应用。
Randomize(随机化    使用“两个常量”或“两个曲线”模式时,会在定义的范围内的每个框架上选择新的力方向。这会导致更动荡,不稳定的运动。

细节

流体在移动时经常受到力量的影响。 例如,烟雾从周围的热空气中升起,会稍微加速。 微妙的影响可以通过使用曲线来控制粒子寿命期间的力量来实现。 使用前面的例子,烟雾最初会加速上升,但随着上升的空气逐渐冷却,力量将会减弱。 起火的浓烟最初可能会加速,然后随着火势蔓延而放慢,甚至在长时间持续下来时甚至开始下落。

Color Over Lifetime module

此模块指定粒子的颜色和透明度在其生命周期中如何变化。

属性

Property:Function:
Color    

粒子在其整个生命周期中的颜色梯度。梯度条的最左边的点表示粒子寿命的开始,梯度条的右侧表示粒子寿命的结束。

在上面的图片中,粒子从橙色开始,随着时间的推移而消失,在生命结束的时候不可见。

细节

许多类型的自然和幻想粒子随着时间的推移颜色不同,因此这种属性有很多用途。 例如,白色的热火在穿过空气时会冷却,魔法可能会爆发出彩虹般的彩虹。 同样重要的是alpha(透明度)的变化。 当颗粒达到其寿命终点(例如,热火花,烟花和烟雾颗粒)时,这些颗粒被烧坏,褪色或消散是非常普遍的,而渐变渐变产生这种效果。

Color By Speed module(颜色的速度控制模块)

粒子的颜色可以根据其速度以每秒的距离单位进行设置。


属性

PropertyFunction
Color定义在速度范围内的粒子的颜色梯度。
Speed Range(速度范围)颜色梯度映射到的速度范围的低端和高端(范围之外的速度将映射到梯度的端点)。

细节

燃烧或发出的微粒(如火花)在空气中快速移动时(例如火花暴露在更多氧气中)时会更明亮地燃烧,但随着速度变慢,会稍微变暗。为了模拟这个,你可以使用 Color By Speed ,在速度范围的上端有一个白色的渐变,在下端是红色的(在火花的例子中,较快的粒子会变成白色,而较慢的粒子变成红色)。

Size over Lifetime modul

许多效果涉及根据曲线改变大小的粒子,可以在此模块中进行设置

属性

PropertyFunction
Separate Axes(分开轴)在每个轴上独立控制粒径。
Size(尺寸)定义粒子尺寸在其寿命期间如何变化的曲线。

细节

一些颗粒在离开发射点时会典型地改变尺寸,例如那些代表气体,火焰或烟雾的颗粒。例如,随着时间的推移,烟雾将趋于分散并占据更大的体积。您可以通过将烟雾粒子的曲线设置为向上的斜坡来实现这一点,随着粒子的年龄而增加。您还可以使用Color Over Lifetime模块进一步增强这种效果,以在烟雾扩散时淡化烟雾。

对于通过燃烧燃料产生的火球,火焰粒子在排放之后会趋于膨胀,但随着燃料用完和火焰消散而熄灭和收缩。在这种情况下,曲线会有一个上升的“驼峰”,然后回落到一个较小的尺寸。

Non-uniform particle scaling(不均匀的例子缩放)


您可以指定粒子的宽度,高度和深度如何独立变化。Size over Lifetime模块中,选中Separate Axes复选框,然后更改X(宽度),Y(高度)和Z(深度)。请记住,Z只能用于网格粒子。

Size by Speed module(速度大小模块)

这个模块允许你创建粒子,根据它们的速度以每秒的距离单位改变大小。

属性
PropertyFunction
Separate Axes (分开轴)在每个轴上独立控制粒径。
Size定义在速度范围内的粒子大小的曲线。
Speed Range(速度范围)大小曲线映射的速度范围的低端和高端(范围之外的速度将映射到曲线的端点)。

细节

在某些情况下,需要根据速度变化的粒子。例如,你会期望一小块碎片被爆炸加速,而不是大块碎片。您可以使用Size By Speed(速度大小)和一个简单的斜坡曲线来达到这样的效果,该曲线随着粒子大小的减小而按比例增加速度。请注意,这不应该与限制速度超过生命周期模块一起使用,除非您希望粒子在减速时改变它们的大小。

速度范围指定X(宽度),Y(高度)和Z(深度)形状适用的值的范围。速度范围仅在尺寸处于曲线模式之一时适用。快速粒子将使用曲线右端的值进行缩放,而较慢的粒子将使用曲线左侧的值。例如,如果您指定的速度范围在10到100之间:

  • 低于10的速度将设置与曲线的最左边缘对应的粒径。
  • 超过100的速度将设置与曲线的最右边缘对应的粒度。
  • 在10到100之间的速度将设定由沿着与速度对应的曲线上的点确定的粒度。在这个例子中,一个55的速度会根据曲线的中点设置大小。

Non-uniform particle scaling(不均匀的粒子缩放)

可以单独指定如何粒子的宽度,高度和深度的速度大小的变化。由速度大小模块,检查独立轴复选框,然后选择关于所述X(宽度),Y(高度)和Z(深度)的粒子是由颗粒的速度的影响。请记住,Z只能用于网格粒子。

Rotation Over Lifetime module(旋转生命周期模块

属性

PropertyFunction
Separate Axes(分开轴) 允许每个轴指定旋转。启用此选项后,将显示为X,Y和Z中的每一个设置旋转的选项。
Angular Velocity(角速度以每秒度数的旋转速度。请参阅下面的详细信息。

细节

当粒子代表小的固体物体(如爆炸碎片)时,此设置很有用。指定随机的旋转值将使得效果更加真实,而不是在飞行时粒子保持直立。随机旋转也将有助于打破类似形状粒子的规律性(多次重复的相同质地可能非常明显)。

使用随机3D旋转的粒子呈现的叶子 使用随机3D旋转的粒子呈现的叶子

Options(选项)

角速度选项可以从默认的恒定速度改变。速度右侧的下拉菜单可以提供:

PropertyFunction
Constant(恒定)粒子以每秒度数旋转的速度。
Curve(曲线)角速度设定为粒子的寿命期间改变。检测器的底部会出现一个曲线编辑器,它允许您控制粒子整个生命周期中速度如何变化(请参阅下面的图A)。如果勾选了“分离轴”框,则可以给每个X,Y和Z轴赋予曲线速度值。
Random Between  Two Constants(两个常量之间的随机数)      角速度属性有两个角度允许他们之间的旋转。
Random Between Two Curves(两条曲线之间的随机数)角速度设置由曲线指定的粒子的寿命期间改变。在这种模式下,两条曲线是可编辑的,每个粒子将在您定义的这两条曲线的范围之间选取一条随机曲线(见下图B)。

图像A:Z轴角速度

图B:两条曲线之间的角速度

Rotation By Speed module(按速度选装模式)

粒子的旋转可以根据其速度以每秒的距离单位进行设置。

属性

PropertyFunction
Separate Axes (分开轴)为每个旋转轴独立控制旋转。
Angular Velocity(角速度)以每秒度数的旋转速度。
Speed Range(速度范围)大小曲线映射的速度范围的低端和高端(范围之外的速度将映射到曲线的端点)。

细节

当粒子代表在地面上移动的固体物体(例如山体滑坡的岩石)时,可以使用该属性。颗粒的旋转可以与速度成比例地设定,以便令人信服地滚动表面。

速度范围仅适用于速度处于其中一种曲线模式时。快速粒子将使用曲线右端的值进行旋转,而较慢的粒子将使用曲线左侧的值。

External Forces module(外部力量模块)

该属性修改了wind zones(风区对系统发射的粒子的影响

属性

PropertyFunction
Multiplier(乘数)适用于风区力量的比例值。

细节

一个Terrain地形可以将风区,其影响对景观树木的运动。启用此部分可让风区从系统中吹出颗粒。“ (Multiplier)乘数”值可让您缩放风对粒子的影响,因为它们通常比树枝吹得更强。

Collision module(碰撞模块

该模块控制 粒子 如何场景中 GameObjects相 碰撞使用第一个下拉菜单来定义您的碰撞设置是适用于Planes 还是适用于World如果选择“World,则使用“ Collision Mode下拉菜单来定义碰撞设置是适用于2D还是3D世界。

Planes module properties(平面模式属性)

PropertyFunction
Planes popup(平面弹窗)选择平面模式。
Planes一个可扩展的定义碰撞平面的变换列表。
Visualization(可视化)选择碰撞平面Gizmos是否以场景视图显示为线框网格或实体平面。
Scale Plane(比例平面)用于可视化的平面尺寸。
Dampen(挫伤)碰撞后丢失的粒子速度的一小部分。
Bounce(弹跳)碰撞后从表面反弹的粒子速度的一部分。
Lifetime Loss(终身损失)它碰撞时丢失的粒子总寿命的一部分。
Min Kill Speed(最小死亡速度)碰撞后低于此速度的粒子将从系统中移除。
Max Kill Speed(最大死亡速度碰撞后超过这个速度的粒子将从系统中移除。
Radius Scale(半径比例)允许您调整粒子碰撞球体的半径,使其更贴近粒子图形的视觉边缘。
Send Collision Messages(发送碰撞消息)如果启用,则可以通过OnParticleCollision函数从脚本中检测粒子碰撞
Visualize Bounds(可视化边界)在“scene”视图中将每个粒子的碰撞范围渲染为线框形状。

World module properties(世界模式属性)

PropertyFunction
World popup(世界弹窗)选择世界模式
Collision Mode(碰撞模式)3D or 2D.
Dampen(挫伤)碰撞后丢失的粒子速度的一小部分。
Bounce碰撞后从表面反弹的粒子速度的一部分。
Lifetime Loss它碰撞时丢失的粒子总寿命的一部分。
Min Kill Speed碰撞后低于此速度的粒子将从系统中移除。
Max Kill Speed碰撞后超过这个速度的粒子将从系统中移除。
Radius Scale(半径比例)Setting for 2D or 3D.
Collision Quality(碰撞质量)使用下拉菜单来设置粒子碰撞的质量。这影响有多少粒子可以通过对撞机。在质量较低的水平上,粒子有时会穿过对撞机,但资源密集度较低。
       High()当“ Collision Quality设置为“High”时,碰撞总是使用物理系统来检测碰撞结果。这是最资源密集的选择,也是最准确的。
          Medium (Static Colliders) (中等(静态碰撞)) 当“ Collision Quality设置为“ Medium ”(Static Colliders)时,碰撞使用体素网格来缓存先前的碰撞,以便在以后的帧中更快地重复使用。请参阅下面的“ 世界冲突”,了解有关此缓存的更多信息。

“ Medium与“ Low”的唯一区别是“粒子系统”每帧查询物理系统的次数。Medium每帧的查询次数比

请注意,此设置仅适用于永不移动的静态对撞机。

    Low (Static Colliders)(低(静态碰撞)

当“ Collision Quality设置为“ Low ”(静态碰撞)时,碰撞使用体素网格来缓存先前的碰撞,以便在以后的帧中更快地重复使用。请参阅下面的“ 世界冲突”,了解有关此缓存的更多信息。

“ Medium 与“ Low  ”的唯一区别是“粒子系统”每帧查询物理系统的次数。中等每帧的查询次数比

请注意,此设置仅适用于永不移动的静态对撞机。
Collides With(碰撞粒子只会碰撞选定图层上的物体。
Max Collision Shapes(最大碰撞形状)粒子碰撞可以考虑多少个碰撞形状。过多的形状被忽略,地形优先。
Enable Dynamic Colliders(启用动态碰撞器允许粒子也与动态对象碰撞(否则仅使用静态对象)。

Enable Dynamic Colliders()

动态碰撞器是没有配置为运动学的任何碰撞器(关于碰撞器类型的更多信息参见碰撞器文档)。
选中此选项可将这些碰撞器类型包含在碰撞中粒子响应的对象集合中。取消选中此选项,粒子仅对静态碰撞体发生碰撞。
Voxel Size(体素大小)体素表示三维空间中规则网格上的值。当使用中等质量冲突时,Unity会缓存网格结构中的冲突。此设置控制网格大小。较小的值会提供更高的准确性,但会花费更多的内存,效率也会降低。
注意:只有在“Collision Quality (碰撞质量)设置为“中”或“ 低”时才能访问此属性
Collider Force(对撞机的力量)在粒子碰撞后对物理碰撞体施加一个力。这对于将碰撞体推向粒子很有用。
Multiply by Collision Angle(乘以碰撞角度)当对碰撞体施加力时,根据粒子和碰撞体之间的碰撞角度来缩放力的强度。掠射角比正面碰撞产生的力更小。
Multiply by Particle Speed(乘以粒子速度)当对碰撞体施加力时,根据粒子的速度来缩放力的强度。快速移动的粒子比慢速粒子产生更多的力量。
Multiply by Particle Size(乘以粒度)当对碰撞器施加力时,根据粒子的大小来缩放力的强度。较大的粒子会比较小的粒子产生更多的力。
Send Collision Messages(发送碰撞消息选中此项即可通过OnParticleCollision函数检测脚本中的粒子碰撞
Visualize Bounds(可视化边界)在“Scene”视图中预览每个粒子的碰撞球体。

细节

当其他物体包围粒子系统时,粒子与这些物体相互作用时,效果通常会更有说服力。例如,水或碎片应该被坚实的墙壁阻挡,而不是简单地通过它。启用“ 碰撞”模块后,粒子可能会与场景中的对象发生碰撞。

可以设置粒子系统,使其粒子通过从弹出窗口中选择世界模式与场景中的任何碰撞器相撞也可以通过使用Collides With属性根据所在图层禁用Colliders 弹出窗口还有一个“平面”模式选项,它允许您将一组平面添加到不需要碰撞器的场景中。这个选项对于简单的地板,墙壁和类似的物体是有用的,并且比世界模式有更低的处理器开销

Planes模式启用时,可以通过Planes属性添加变换列表(通常为空的GameObjects)平面在物体的局部XZ平面内无限延伸,正Y轴表示平面的法向矢量。为了协助发展,飞机将在场景中显示为小玩意儿,而不管物体是否具有任何可见的网格物体。Gizmos可以显示为线框网格或实体平面,也可以缩放。但是,缩放比例仅适用于可视化 - 碰撞平面本身通过场景无限延伸。

当碰撞被启用时,粒子的大小有时是一个问题,因为它的图形可以被剪切,因为它与一个表面接触。这可能导致粒子在停止或弹跳之前出现在表面“下沉”。“ 半径比例”属性通过为粒子定义一个近似的圆形半径来解决此问题,以其实际大小的百分比表示。这个大小的信息是用来防止削减和避免陷入效应。

浸湿弹跳特性对于当颗粒代表固态物体是有用的。例如,砾石在抛出时倾向于从坚硬的表面反弹,但是在碰撞期间,雪球的颗粒可能会失去速度。终生损失最小杀伤速度可以帮助减少碰撞后残留颗粒的影响。例如,火球在空中飞行时可能会持续几秒钟,但碰撞后,分开的火焰粒子应该迅速消散。

如果启用“ 发送碰撞消息”,您还可以检测脚本中的粒子碰撞可以将脚本附加到具有粒子系统的对象,也可以附加到具有对撞机的对象,或者两者兼有。通过检测碰撞,你可以在游戏中使用粒子作为主动对象,例如投射物,魔法和能量提升。有关更多详细信息和示例,请参阅MonoBehaviour.OnParticleCollision的脚本参考页

世界冲

“世界碰撞”模块具有“ Collision Quality”属性,您可以将其设置为“ 高”,“ 中”或“ 低”当“ Collision Quality”设置为“ 中等”(静态碰撞体)或“ 低”(静态碰撞体)时,碰撞使用体素网格(3D网格上的值)来缓存先前的碰撞,以便在之后的帧中快速重复使用。

该高速缓存由每个体素中的平面组成,其中平面表示该位置处的碰撞表面。在每个帧上,Unity会检查缓存中粒子位置的平面,如果有的话,Unity会将其用于碰撞检测。否则,它会问物理系统。如果返回冲突,则将其添加到缓存中,以便在后续帧上进行快速查询。

这是一个近似值,所以可能会发生一些错过的碰撞。您可以减小体素大小值来帮助解决这个问题。但是,这样做会使用额外的内存,效率会降低。

“ 中”与“  ”的唯一区别是系统允许查询物理系统每帧多少次。Low使每帧的查询次数少于Medium。一旦超过每帧预算,只有高速缓存被用于任何剩余的粒子。这可能会导致错过的冲突增加,直到缓存更加全面地填充。

Triggers module(触发器模块)

粒子系统有能力在场景中与一个或多个碰撞器交互时触发回调。当一个粒子进入或离开一个对撞机,或者在粒子处于内部或外部的时候,这个Callback可以被触发。

您可以使用回调作为一个简单的方法,当它进入对撞机时(例如,为了防止雨滴穿透屋顶)破坏粒子,或者它可以用来修改任何或所有粒子的属性。

Triggers (触发器)”模块还提供“ Kill(杀死)”选项以自动删除粒子,“ Ignore (忽略)”选项可忽略碰撞事件,如下所示。

粒子系统触发器模块 粒子系统触发器模块

要使用该模块,首先添加您希望创建Colliders (触发器)的triggers (碰撞器),然后选择要使用的事件。

你可以选择触发一个事件,每当粒子是:

  • 在对撞机的边界内
  • 在对撞机的边界之外
  • 进入对撞机的界限
  • 退出对撞机的界限
Property:Function:
InsideCallback粒子事件在对撞机内时触发。Ignore 当粒子在对撞机内部时,则不会触发事件。kill 杀死对撞机内的粒子
OutsideCallback粒子事件在对撞机外时触发。Ignore 当粒子在对撞机外部时,则不会触发事件。kill 杀死对撞机外的粒子
EnterCallback粒子事件在进入对撞机时触发。Ignore 当粒子在进入对撞机时,则不会触发事件。kill 杀死对撞机进入的粒子
ExitCallback粒子事件在离开对撞机时触发。Ignore 当粒子在离开对撞机时,则不会触发事件。kill 杀死对撞机离开的粒子
Radius Scale (半径比例)    此参数设置粒子的碰撞边界,允许在碰撞碰撞物之前或之后发生事件。例如,您可能希望粒子在反弹前稍微穿透碰撞对象的表面,在这种情况下,您会将“半径比例”设置为略小于1.请注意,事件实际上不会更改触发器,但可以延迟或提前触发器的视觉效果。
- 输入1,表示粒子碰撞碰撞器时发生的事件
- 输入一个小于1的值,触发器在粒子穿透碰撞器后出现
- 输入一个大于1的值,以使触发器看起来发生粒子穿透对撞机后
Visualize Bounds(可视化边界)这使您可以在编辑器窗口中显示粒子的碰撞边界。
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

[ExecuteInEditMode]
public class TriggerScript : MonoBehaviour
{
    ParticleSystem ps;
    //这些列表被用来包含匹配的粒子
    //触发条件每个帧。
    List<ParticleSystem.Particle> enter = new List<ParticleSystem.Particle>();
    List<ParticleSystem.Particle> exit = new List<ParticleSystem.Particle>();

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

    void OnParticleTrigger()
    {
        

        //得到与触发条件匹配的粒子这一帧
        int numEnter = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Enter, enter);
        int numExit = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Exit, exit);

        //遍历进入触发器的粒子并使其为红色
        for (int i = 0; i < numEnter; i++)
        {
            ParticleSystem.Particle p = enter[i];
            p.startColor = new Color32(255, 0, 0, 255);
            enter[i] = p;
        }

        
        //遍历那些从触发器中退出的粒子并使它们变绿
        for (int i = 0; i < numExit; i++)
        {
            ParticleSystem.Particle p = exit[i];
            p.startColor = new Color32(0, 255, 0, 255);
            exit[i] = p;
        }

        
        //将被修改的粒子重新分配到粒子系统中
        ps.SetTriggerParticles(ParticleSystemTriggerEventType.Enter, enter);
        ps.SetTriggerParticles(ParticleSystemTriggerEventType.Exit, exit);
    }
}

在回调内部,使用ParticlePhysicsExtensions.GetTriggerParticles()(以及你想指定ParticleSystemTriggerEventType)来确定哪些粒子符合哪个标准。

下面的例子使粒子在进入对撞机时变成红色,在离开对撞机的界限时变成绿色。


下面的图片展示了这个结果:

编辑器视图 编辑器视图 游戏视图 游戏视图


如果有理解错误的地方欢迎指点!!!


  • 4
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您介绍一下使用Unity粒子系统制作特效的实例。下面以制作一个火焰特效为例。 步骤如下: 1. 创建一个新的场景,并在场景中创建一个空对象,命名为“Fire”。 2. 在“Fire”对象上添加一个粒子系统组件(Particle System),并进行如下设置: a. 将粒子系统的“Start Lifetime”设为2,表示粒子的生命周期为2秒。 b. 将粒子系统的“Start Speed”设为0,表示粒子的初始速度为0。 c. 将粒子系统的“Start Size”设为0.3,表示粒子的初始大小为0.3。 d. 将粒子系统的“Start Color”设为黄色,表示粒子的初始颜色为黄色。 e. 将粒子系统的“Start Rotation”设为0,表示粒子的初始旋转角度为0。 f. 将粒子系统的“Start Rotation3D”设为true,表示粒子的旋转角度为3D。 3. 在粒子系统的“Shape”设置中,将粒子系统的形状设为“Cone”,并将“Angle”设为50,表示粒子的发射角度为50度。 4. 在粒子系统的“Emission”设置中,将粒子的发射速率设为200,表示每秒发射200个粒子。 5. 在粒子系统的“Velocity over Lifetime”设置中,将粒子的速度曲线设置为“Linear”,并将“Y”轴的值设为2,表示粒子沿着Y轴正方向上升。 6. 在粒子系统的“Size over Lifetime”设置中,将粒子的大小曲线设置为“Curve”,并将曲线拖拽为一个“U”形,表示粒子在生命周期中逐渐变大后再逐渐变小。 7. 在粒子系统的“Color over Lifetime”设置中,将粒子的颜色曲线设置为“Gradient”,并将颜色的渐变方式设置为“Random Between Two Colors”,表示粒子的颜色随机在两种颜色之间变化。 8. 在粒子系统的“Texture Sheet Animation”设置中,将动画模式设置为“Single Row”,并将动画帧数设置为8,表示使用8帧动画来模拟火焰的效果。 9. 在粒子系统的“Renderer”设置中,将材质设为“Particles/Additive”,表示使用加法混合模式来渲染粒子。 10. 最后,将粒子系统的位置调整到火焰所在的位置,即可看到火焰特效的效果。 以上就是使用Unity粒子系统制作火焰特效的步骤,您可以根据需要进行调整和改进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值