unity 之 Particle 内置粒子系统二

2023-12-27 11:50

本文主要是介绍unity 之 Particle 内置粒子系统二,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Emission module

这个模块影响发射速率和发射的时间

Properties

PropertyFunction
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:圆和半圆

The shape module when set to Sphere mode

Note: Sphere and Hemisphere have the same properties.

PropertyFunction
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

The shape module when set to Cone mode

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

The shape module when set to Box mode

Box从盒子形状的边缘、表面或物体上发射粒子.粒子沿发射体的前进(Z)方向运动
Emit from:选择要从中发出的框的部分: Edge, Shell, or Volume.
Randomize PositionMove 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

The shape module when set to Mesh mode

形状模块设置为网格模式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

PropertyFunction
Linear X, Y, Z粒子在X、Y、Z轴上的线速度.
SpaceX、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

PropertyFunction
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

PropertyFunction
Planes popupPlanes 模式.
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

PropertyFunction
World popup World .模式
Collision Mode3D or 2D.
Collision Quality影响粒子穿过碰撞体数量,低质量消耗性能低,有时候粒子会穿过碰撞体
    High高质量,实时检测粒子与碰撞体得碰撞
    Medium (Static Colliders)
请注意,此设置仅适用于从不移动的静态碰撞器。
    Low (Static Colliders)请注意,此设置仅适用于从不移动的静态碰撞器。
Collides With粒子只会与选定层上的物体碰撞。.
Max Collision Shapes粒子碰撞可以考虑多少种碰撞形状. 多余的形状被忽略,Terrain优先
Enable Dynamic Colliders允许粒子与动态对象发生碰撞(否则只使用静态对象)
Enable Dynamic CollidersDynamic 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选项,以及忽略碰撞事件的选项

Particle Systems Triggers module

Property:Function:
Inside进入 Collider内部时调用.
Outside在碰撞体外部调用
Enter进入时调用
Exit退出时调用
Radius Scale这个参数设置粒子的碰撞边界允许事件在粒子接触对撞机之前或之后发生.例如,你可能想让一个粒子在弹回之前穿透对撞机物体的表面,在这种情况下,可以将半径范围设置为略小于1. 请注意,当事件实际触发时,此设置不会更改,但可以延迟或提前触发的视觉效果。
- 输入1,使事件看起来是在粒子接触对撞机时发生的
- 输入一个小于1的值,使触发器看起来是在粒子穿透对撞机后发生的
- 输入一个大于1的值,使触发器看起来是在粒子穿透对撞机后发生的
Visualize BoundsThis 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

PropertyFunction
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影响方向和旋转属性。

PropertyFunction
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 内置粒子系统二的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/543033

相关文章

Python 内置的一些数据结构

文章目录 1. 列表 (List)2. 元组 (Tuple)3. 字典 (Dictionary)4. 集合 (Set)5. 字符串 (String) Python 提供了几种内置的数据结构来存储和操作数据,每种都有其独特的特点和用途。下面是一些常用的数据结构及其简要说明: 1. 列表 (List) 列表是一种可变的有序集合,可以存放任意类型的数据。列表中的元素可以通过索

python内置模块datetime.time类详细介绍

​​​​​​​Python的datetime模块是一个强大的日期和时间处理库,它提供了多个类来处理日期和时间。主要包括几个功能类datetime.date、datetime.time、datetime.datetime、datetime.timedelta,datetime.timezone等。 ----------动动小手,非常感谢各位的点赞收藏和关注。----------- 使用datet

Unity Post Process Unity后处理学习日志

Unity Post Process Unity后处理学习日志 在现代游戏开发中,后处理(Post Processing)技术已经成为提升游戏画面质量的关键工具。Unity的后处理栈(Post Processing Stack)是一个强大的插件,它允许开发者为游戏场景添加各种视觉效果,如景深、色彩校正、辉光、模糊等。这些效果不仅能够增强游戏的视觉吸引力,还能帮助传达特定的情感和氛围。 文档

Linux内置的审计跟踪工具:last命令

如果你是一个服务器管理员,你或许知道你要保护你的服务器的话,不仅是从外部,还要从内部保护。Linux有一个内置工具来看到最后登陆服务器的用户,可以帮助你保护服务器。   这个命令是last。它对于追踪非常有用。让我们来看一下last可以为你做些什么。   last命令的功能是什么   last显示的是自/var/log/wtmp文件创建起所有登录(和登出)的用户。这个文件是二进制

Unity协程搭配队列开发Tips弹窗模块

概述 在Unity游戏开发过程中,提示系统是提升用户体验的重要组成部分。一个设计良好的提示窗口不仅能及时传达信息给玩家,还应当做到不干扰游戏流程。本文将探讨如何使用Unity的协程(Coroutine)配合队列(Queue)数据结构来构建一个高效且可扩展的Tips弹窗模块。 技术模块介绍 1. Unity协程(Coroutines) 协程是Unity中的一种特殊函数类型,允许异步操作的实现

内置带so的APK为系统APK方法

(1)若内置为可卸载的APK,可以无需解压出lib直接编译就可以 具体参考http://blog.csdn.net/a462533587/article/details/46380795 (2)若内置为system APP,上述blog也有两种方式: 方法一:   如下例,在Android.mk中添加并配置变量(注意路径对应): LOCAL_PREBUILT_JNI_LIBS = \

Unity 资源 之 Super Confetti FX:点亮项目的璀璨粒子之光

Unity 资源 之 Super Confetti FX:点亮项目的璀璨粒子之光 一,前言二,资源包内容三,免费获取资源包 一,前言 在创意的世界里,每一个细节都能决定一个项目的独特魅力。今天,要向大家介绍一款令人惊艳的粒子效果包 ——Super Confetti FX。 二,资源包内容 💥充满活力与动态,是 Super Confetti FX 最显著的标签。它宛如一位

Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(4)

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正​​ Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(3)-CSDN博客  这节就是真正的存储数据了   理清一下思路: 1.存储路径并检查 //2进制文件类存储private static string Data_Binary_Pa

Unity Adressables 使用说明(一)概述

使用 Adressables 组织管理 Asset Addressables 包基于 Unity 的 AssetBundles 系统,并提供了一个用户界面来管理您的 AssetBundles。当您使一个资源可寻址(Addressable)时,您可以使用该资源的地址从任何地方加载它。无论资源是在本地应用程序中可用还是存储在远程内容分发网络上,Addressable 系统都会定位并返回该资源。 您

Unity Adressables 使用说明(六)加载(Load) Addressable Assets

【概述】Load Addressable Assets Addressables类提供了加载 Addressable assets 的方法。你可以一次加载一个资源或批量加载资源。为了识别要加载的资源,你需要向加载方法传递一个键或键列表。键可以是以下对象之一: Address:包含你分配给资源的地址的字符串。Label:包含分配给一个或多个资源的标签的字符串。AssetReference Obj