当前位置: 首页 > news >正文

Unity中 粒子系统使用整理(一)

Unity提供了两种粒子系统的解决方案,本文整理内置粒子系统的使用,内置粒子系统是在 CPU 上模拟粒子行为,主要优点如下:
1.可以使用 C# 脚本与系统及其中的各个粒子进行交互。
2.粒子系统可以使用 Unity 的基础物理系统,与场景中的碰撞体进行交互。

基础选项:

Playback Speed :用于加快或减慢粒子模拟速度,可以直观查看在高级状态下的效果。
Playback Time :表示自系统启动以来经过的时间,这可能比实时更快或更慢,具体取决于播放速度。
Particles :表示系统中当前有多少粒子。
Speed Range :表示生成的粒子速度的范围。
Simulate Layers :预览未选定的粒子系统。默认情况下,只有选定的粒子系统才能在 Scene 视图中播放。但是,将 Simulate Layers 设置为 Nothing 以外的任何其他选项时,与 Layer Mask 匹配的效果会自动播放,而无需您选择它们。
Resimulate :表示重新开始粒子系统的模拟。
Show Bounds : 表示显示粒子范围的包围盒。

Show Only Selected :表示只显示选择的粒子系统,未选的隐藏(只对父子粒子系统有效)。

1.可随时间变化的属性:

在粒子系统的数值属性中,提供了四种变化方式:
Constant:属性的值在其整个生命周期内是固定的。
Curve:该值由曲线/图形指定。
Random Between Two Constants:两个常量值定义了值的上限和下限;实际值随着时间的推移在这些边界之间随机变化。
Random Between Two Curves:两条曲线定义了值在生命周期内给定点的上限和下限;当前值在这些边界之间随机变化。

Curve方式下的曲线设置:


Optimize使曲线适应四个或更少的关键点来构建称为多项式 (Polynomial) 的快速计算器,这比读取未优化的曲线更有效。
Remove:删除选定的曲线。


Loop:在粒子的生命周期内以指定的次数播放曲线。例如,如果制作一条缩放粒子大小的曲线,可以指定其多次循环,这会使“大小缩放”动画在粒子消亡之前多次播放,而不是仅播放一次。
Ping Pong:与 Loop相似,但以连续振荡的方式依次向前和向后播放曲线。
Clamp:将超出曲线时间范围的粒子查询限制为曲线的第一个或最后一个值。


选择预置的曲线。

2.渐变:

对于主模块中的 Start Color 属性的设置,有如下四种方式:

Color:所有粒子在粒子系统的整个生命周期内都是以这种颜色开始。粒子在自身的生命周期中仍可以改变颜色。
Gradient:粒子系统发出的粒子以渐变开始时的颜色开始,而以渐变结束时的颜色结束。渐变线代表粒子系统的生命周期;粒子系统在对应于粒子系统当前的存在时间点处从渐变中选择一种颜色。
Random Between Two Colors:粒子系统选择两种给定颜色之间的随机线性插值作为初始粒子颜色。
Random Between Two Gradients:粒子系统在对应于该系统当前的存在时间点处从每个给定渐变中选择一种颜色。选择两种选定颜色之间的随机线性插值作为初始粒子颜色
Random Color:类似于 Gradient 模式(这种情况下,粒子从定义的 Gradient 中选取初始颜色)。但是,在这种模式下,粒子系统不会根据粒子系统的存在时间来选择样本,而是会随机进行选择。此模式还很适合与渐变编辑器 (Gradient Editor) 内部的 Fixed Gradient Mode 配合使用。启用此选项后,可以选择一组预定义的精确起始颜色,然后将概率应用于每种颜色。 

Gradient窗口设置:

Mode:确定是否混合粒子颜色设置。

在Mode中选择Blend有渐变效果,选择Fixed没有渐变效果
Color:显示渐变中当前所选关键点的颜色。使用此项可以编辑渐变中该位置的颜色。
Location:显示当前所选关键点在渐变上的距离。

代表上图中四个的位置百分比。
Presets:保存渐变设置。单击 New 可将当前值集设置为渐变预设。

点击New可保存调整的位置颜色信息,点击已保存的位置,将信息恢复到保存的设置。

3.与动画绑定:


使用Animation可通关添加粒子系统的属性创建关键帧动画。

属性及模块使用:

1.Main Module(主模块)

1.Duration :“系统运行的时间长度”,就是发射一波粒子的持续时间。
如上图设置Duration为2,显示效果如下:
2.Looping  :"系统将在其持续时间结束时再次启动并继续重复该循环",勾选此选项之后,就可以循环发射粒子。
3.Prewarm :"系统将初始化,就像已经完成一个完整周期一样,仅当 Looping 也启用时才有效"。(就是省去了粒子初始开始发射的过程,开始的时候粒子以及铺满粒子的包围盒)
4.Start Delay : 启用此属性后,将延迟一段时间发射粒子(以秒为单位)。
5.Start Lifetime :   粒子的初始生命周期(就是粒子显示的时间)。
6.Start Speed : 每个粒子在适当方向的初始速度。
7.3D Start Size : 如果要分别控制每个轴的大小,请启用此属性。
8.Start Size : 每个粒子的初始大小(调整x轴的大小)。
默认启用的是Start Size,启用3D Start Size之后,Start Size隐藏,可以调整各个轴方向上的大小,注:在调整3D大小时,渲染栏不能用Billboard(公告牌),否则看不出z轴的变化,z轴仅适用于 3D 网格粒子

9.3D Start Rotation :  如果要分别控制每个轴的旋转,请启用此属性。
10.Start Rotation : 每个粒子的初始旋转角度。
和 7、8类似。
11.Flip Rotation : 值的范围时0到1,设置后使一些粒子以相反的方向旋转(就是在粒子有旋转角度[9或者10被设置]的时候,通过设置此值,达到取相反方向的效果,此值越接近1,相反方向的粒子越多)。

12.Start Color : 每个粒子的初始颜色。
13.Gravity Modifier : 缩放 Physics 窗口中设置的重力值。值为零会关闭重力。

修改值之后,就会有重力方向的下落效果:

14.Simulation Space : 控制粒子的运动位置是在父对象的局部空间中(因此与父对象一起移动)、在世界空间中还是相对于自定义对象(与您选择的自定义对象一起移动)。

15.Simulation Speed : 调整整个系统更新的速度(调整粒子的发射速度和移动速度)。
16.Delta Time : 在 Scaled 和 Unscaled 之间进行选择,其中的 Scaled 使用 Time 窗口中的 Time Scale 值,而 Unscaled 将忽略该值。此属性对于出现在暂停菜单 (Pause Menu) 上的粒子系统非常有用。
17.Scaling Mode : 选择如何使用变换中的缩放。优先使用 ​Local 模式(计算量最小),复杂层级使用 ​Hierarchy 时避免深度嵌套
选项有三种:Hierarchy、Local 或 Shape。作用和典型应用场景如下:

Hierarchy受所有父级物体缩放累积影响嵌套在复杂层级中的特效
Local仅应用粒子系统变换缩放,忽略任何父级独立特效(如角色技能特效)
Shape将缩放应用于粒子起始位置,但不影响粒子大小动态调整发射区域

18.Play on Awake : 启用此属性时,粒子系统会在创建对象时自动启动(即粒子是否自动播放)
19.Emitter Velocity Mode : 选择 Particle System 如何计算 Inherit Velocity 和 Emission 模块使用的速度。系统可以使用Rigidbody组件(如果存在的话)或通过跟踪Transform组件的运动来计算速度。如果Rigidbody组件不存在,系统默认使用Transform组件。

Rigidbody当发射器是一个带有刚体组件的游戏对象时,粒子会受到该刚体速度的影响,粒子发射时会继承刚体的速度。
Transform粒子会受到发射器变换组件(位置、旋转、缩放)的影响。与刚体模式不同,变换模式不考虑刚体的物理模拟,只关注发射器的变换信息。粒子发射时会根据发射器的移动速度和方向来确定自身的初始速度。
Custom

20.Max Particles : 系统中同时允许的最多粒子数。如果达到限制,则移除一些粒子。
21.Auto Random Seed : 如果启用此属性,则每次播放时粒子系统看起来都会不同。设置为 false 时,每次播放时系统都完全相同。
22.Random Seed : 禁用自动随机种子时,此值用于创建唯一的可重复效果。
23.Stop Action : 当属于系统的所有粒子都已完成时,可使系统执行某种操作。当一个系统的所有粒子都已死亡,并且系统存活时间已超过 Duration 设定的值时,判定该系统已停止。对于循环系统,只有在通过脚本停止系统时才会发生这种情况。
Stop Action 选项如下:

Disable禁用游戏对象。
Destroy 销毁游戏对象。
Callback将 OnParticleSystemStopped 回调发送给附加到游戏对象的任何脚本。

24.Culling Mode : 选择粒子在屏幕外时是否暂停粒子系统模拟。在屏幕外时进行剔除具有最高效率,但您可能希望继续进行非一次性 (off-one) 效果的模拟。

Automatic循环系统使用 Pause,而所有其他系统使用 Always Simulate
Pause And Catch-up系统在屏幕外停止模拟。重新进入视图时,模拟将执行一个大步骤,以达到如果未暂停时本应存在的点。在复杂系统中,此选项可能会导致性能峰值。
Pause系统在屏幕外停止模拟。
Always Simulate系统会在每一帧上处理其模拟,无论它是否在屏幕上。这对于烟花等一次性效果非常有用,在模拟期间,这种效果会很明显。

 

25.Ring Buffer Mode :使粒子保持活动状态,直到达到最大粒子数,此时新粒子将回收最旧的粒子,而不是在粒子的生命周期结束时删除粒子。

Pause Until Replaced在旧粒子的生命周期结束时暂停旧粒子,直到达到 Max Particle 限制,此时系统会回收它们,以便它们重新显示为新粒子。
Loop Until Replaced在其生命周期结束时,粒子会回放回其生命周期的指定比例,直到达到 Max Particle 限制,此时系统会回收它们,因此它们会重新显示为新粒子。
   Disabled系统在粒子生命周期终结时删除粒子。

2.Emission Module(发射模块)


3.Shape Module(形状模块)


4.Velocity over Lifetime Module


5.Noise Module


6.Limit Velocity over Lifetime Module


7.Inherit Velocity Module


8.Lifetime by Emitter Speed Module


9.Force over Lifetime Module


10.Color over Lifetime Module


11.Color by Speed Module


12.Size over Lifetime Module


13.Size by Speed Module


14.Rotation over Lifetime Module


15.Rotation by Speed Module


16.External Forces Module


17.Collision Module


18.Triggers Module


19.Sub Emitters Module


20.Texture Sheet Animation Module


21.Lights Module


22.Trails Module


23.Custom Data Module


24.Renderer Module

力场使用:

粒子系统着色器:

粒子系统 GPU 实例化:

集成JobSystem:

未完待续。。。

参考链接:

内置粒子系统 - Unity 手册

Unity - 手册:主模块 (unity3d.com)


http://www.mrgr.cn/news/96782.html

相关文章:

  • Vue3.5 企业级管理系统实战(十二):组件尺寸及多语言实现
  • Cesium学习(未完继续)
  • 虚幻5入门
  • 【目标检测】【深度学习】【Pytorch版本】YOLOV2模型算法详解
  • vue3使用v-md-editor完成Markdown内容展示
  • 01_使用Docker将Coding上项目部署到k8s平台
  • 编译玄铁处理器RISC-V指令测试用例
  • EasyExcel导出导入excel工具类
  • Go+Gin实现安全多文件上传:带MD5校验的完整解决方案
  • MySQL 进阶 面经级
  • 一起学习大语言模型-常用命令及模型介绍
  • 2023第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(真题题解)(C++/Java题解)
  • 41、当你在 index.html 中引用了一个公共文件(比如 common.js),修改这个文件后,用户访问页面时仍然看到旧内容,因为浏览器缓存了旧版本
  • Kafka 4.0入门到熟练
  • 41.C++哈希6(哈希切割/分片/位图/布隆过滤器与海量数据处理场景)
  • ML 聚类算法 dbscan|| OPTICS
  • 【C++】vector常用方法总结
  • Springboot学习笔记3.28
  • JVM——模型分析、回收机制
  • 七. JAVA类和对象(二)