草庐IT

【Unity3D】粒子系统ParticleSystem

little_fat_sheep 2023-04-20 原文

1 简介

        拖尾(TrailRenderer)线段渲染器(LineRenderer)、粒子系统(ParticleSystem)是 Unity3D 提供的三大特效,其中粒子系统的功能最为强大,特效也最炫酷,但操作也最复杂。粒子系统中,不断地有粒子生成和粒子消亡,一般而言,粒子消亡速率和生成速率保持一致(除预热阶段),使得粒子系统保持一个稳定状态。使用粒子系统,可以实现烟花、水泡、枪口火花、核弹爆炸等特效。

        在 Hierarchy 窗口右键,依次选择【Effects→Particle System】,可以创建一个粒子系统。

        粒子系统的使用非常灵活,主要有以下用法:

  • 控制发射器的形状(圆柱形、圆锥形、球形、圆形等)、发射周期、粒子数、粒子预热、发射延时等;
  • 控制粒子的形状、大小、颜色、材质、速度、旋转、生命周期等,并且在粒子的生命周期内可以修改这些属性;
  • 给粒子添加拖尾特效;
  • 控制多个粒子系统并行或串行发射粒子。

        粒子系统属性面板如下: 

  • Particle System:初始化模块
  • Emission:发射模块
  • Shape:发射器形状模块
  • Velocity over Lifetime:生命周期内速度变化模块
  • Limit Velocity over Lifetime:生命周期内速度约束模块
  • Inherit Velocity:继承父对象的速度,粒子速度会受到其父对象移动的影响
  • Force over Lifetime:生命周期内受力变化模块
  • Color over Lifetime:生命周期内颜色变化模块
  • Color by Speed:颜色受速度的影响模块
  • Size over Lifetime:生命周期内粒子大小变化模块
  • Size by Speed:粒子大小受速度影响模块
  • Rotation over Lifetime:生命周期内方向变化模块
  • Rotation by Speed:方向受速度影响模块
  • External Forces:粒子受外力影响模块
  • Noise:粒子受到随机噪声影响模块
  • Collision:碰撞模块
  • Triggers:触发器模块,如粒子雨,使粒子不会达到屋内
  • Sub Emitters:子发射器模块,多个粒子系统并行或串行发射粒子
  • Texture Sheet Animation:纹理层动画模块,可以控制将一张图片分割成多个部分,每次将其中的一个部分取出作为粒子贴图
  • Lights:光照模块
  • Trails:拖尾模块,可以给粒子添加拖尾效果
  • Custom Data:自定义模块,为粒子自定义数据
  • Renderer:渲染模块,可以设置渲染材质球、拖尾材质球等

2 Particle System(初始化模块)

  • Duration:粒子系统发射粒子的持续时间,当开启 Looping 后,Duration 失效;
  • Looping:是否循环发射粒子;
  • Prewarm:是否开启粒子预热,开启后,粒子个数从 0 逐渐增加到最大值;
  • Start Delay:发射粒子之前的延迟,当开启 Prewarm(预热)后不能使用此项;
  • Start Lifetime:粒子初始生命(存活时长),以秒为单位;
  • Start Speed:粒子初始速度
  • 3D Start SIze:粒子初始 3D 尺寸,开启后需要设置 X、Y、Z大小;
  • Start Size:粒子初始大小,3D Start SIze 开启后此选项消失;
  • 3D Start Rotation:粒子初始 3D 旋转,开启后,需要设置粒子在 X、Y、Z 轴上的旋转;
  • Start Rotation:粒子初始旋转角度,3D Start Rotation 开启后此选项消失;
  • Randomize Rotation:随机化旋转,取值 0~1,表示粒子反向(顺时针)旋转的概率;
  • Start Color:粒子初始颜色;
  • Gravity Modifier:粒子受到重力影响;
  • Simulation Space:粒子运动使用的坐标系(本地坐标系、世界坐标系);
  • Simulation Speed改变粒子系统中所有粒子的速度,取值表示倍数;
  • Delta Time:调整使用固定时间还是帧刷新粒子状态;
  • Scaling Mode:缩放粒子系统的状态;
  • Play On Awake:粒子系统启动后是否开启自动播放;
  • Emitter Velocity:粒子发射后的移动方式,采用 Rigidbody(刚体)还是 Transform(变换)
  • Max Particles:粒子系统中最大粒子个数;
  • Auto Random Seed:自动随机种子,粒子的部分状态随机生成,相同的随机数种子,每次产生的随机数一致;
  • Stop Action:当粒子系统发射完所有粒子后的操作,可以添加回调函数或在脚本中重写以下方法:
public void OnParticleSystemStopped()

        补充:属性右边的小三角形都可以展开,用户可以设置某属性取值方式,如下:

  • Constant:该属性取值是一个固定常量
  • Curve:该属性取值是一个变量,变量由曲线控制,用户可以自定义曲线;
  • Random Between Two Constant:该属性取值是 2 个常量中的随机数;
  • Random Between Two Curve:该属性取值是 2 个变量中的随机数,变量由 2 条曲线控制,用户可以自定义曲线

3 Emission(发射模块)

  • Rate over Time:发射频率按时间,每秒发射次数(未开启 Bursts 时,每次发射一个粒子);
  • Rate over Distance:发射频率按距离,移动粒子系统时,每米发射次数(未开启 Bursts 时,每次发射一个粒子);
  • Bursts:每次发射开启多少个循环(Cycles),每个循环发射多少个粒子(Count),每个循环的时间间隔是多少(Interval)

        设置 Bursts(爆炸)参数如下:

        显示效果如下:

4 Shape(发射器形状模块)

  • Shape:发射器形状,主要有:Sphere、Hemisphere、Cone、Donut、Box、Mesh、Mesh Renderer、Skinned Mesh Renderer、Circle、Edge;
Cone
Circle
Sphere

5 Renderer(渲染器模块)

  • Render Mode:渲染模式,主要有:Billboard(广告牌,粒子永远面朝相机)、Stretched Billboard(可拉伸广告牌)、Horizontal Billboard(水平广告牌,粒子面朝 Y 轴正方向)、Vertical Billboard(垂直广告牌,粒子面朝 X 轴正方向)、Mesh(网格);
  • Material:粒子材质;
  • Trail Material:拖尾特效材质,通常取 Default-Line。

6 Collision(碰撞模块)

  • Planes:碰撞平面;
  • Dampen:阻尼系数,取值 0~1,碰撞后速度减小;
  • Bounce:反弹系数,取值 0~1,碰撞后的反弹力度,取值为 0 时,粒子会贴着平面飞行;
  • Lifetime Loss:生命衰减系数,取值 0~1,每次碰撞生命都会衰减,取 0 时碰撞后粒子正常死亡,取 1 时碰撞后粒子立即死亡;
  • Visualization:可视化平面,网格(Grid)还是实体(Solid);
  • Scale Plane:缩放平面。

        点击 Planes 右边的加号,可以添加碰撞平面(此平面在运行时不可见),此时粒子系统游戏对象上自动添加了个子对象,如下:

         选中 Plane Transform 1 游戏对象,在 Inspector 窗口调整旋转角度,粒子系统显示效果如下:

7 Sub Emitters(子发射器模块)

  • Birth:子粒子系统与主粒子系统同时发射粒子(并行发射);
  • Collision:主粒子系统发生粒子碰撞时,触发子粒子系统发射粒子;
  • Death:主粒子系统粒子消亡时,触发子粒子系统发射粒子(串行发射)。

        设置主粒子系统每秒发射 1 个粒子(Rate over Time = 1,Emission 模块),再添加子粒子系统,如下:

         此时主粒子系统下面会自动添加一个子粒子系统,如下:

         选中 SubEmitter0,设置初始生命(Start Lifetime)为 1 秒,初始速度(StartSpeed)为 8 米 / 秒,查看 Emission 模块,发现自动添加了 Bursts,如下: 

        粒子系统显示效果如下:

8 Trails(拖尾模块)

        粒子系统中的拖尾与 TrailRenderer 组件类似。

  • Mode:拖尾模式,取值有:Particles(每个粒子拖尾独立绘制)、Ribbon(丝带,相邻粒子拖尾相连)
  • Lifetime:拖尾生命,拖尾长度由 0 增长到最长时的时长;
  • Color over Lifetime:拖尾生命周期内颜色变化;
  • Width over Trail:拖尾从头到尾宽度值;
  • Color over Trail:拖尾从头到尾颜色值。

        设置粒子系统每秒发射 1 个粒子(Rate over Time = 1,Emission 模块),初始生命(Start Lifetime)为 5 秒,初始速度(StartSpeed)为 25 米 / 秒,重力(Gravity Modifier)为 1,拖尾材质(Trail Material,Renderer 模块)为 Default-Line,拖尾(Trails)模块设置见属性面板,粒子系统显示效果如下:

有关【Unity3D】粒子系统ParticleSystem的更多相关文章

  1. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  2. 电脑0x0000001A蓝屏错误怎么U盘重装系统教学 - 2

      电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。  准备工作:  1、U盘一个(尽量使用8G以上的U盘)。  2、一台正常联网可使用的电脑。  3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。  4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。  U盘启动盘制作步骤:  注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注

  3. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  4. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  5. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  6. unity---接入Admob - 2

    目录1.AdmobSDK下载地址2.将下载好的unityPackagesdk导入到unity里​编辑 3.解析依赖到项目中

  7. Unity 3D 制作开关门动画,旋转门制作,推拉门制作,门把手动画制作 - 2

    Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u

  8. [Vuforia]二.3D物体识别 - 2

    之前说过10之后的版本没有3dScan了,所以还是9.8的版本或者之前更早的版本。 3d物体扫描需要先下载扫描的APK进行扫面。首先要在手机上装一个扫描程序,扫描现实中的三维物体,然后上传高通官网,在下载成UnityPackage类型让Unity能够使用这个扫描程序可以从高通官网上进行下载,是一个安卓程序。点到Tools往下滑,找到VuforiaObjectScanner下载后解压数据线连接手机,将apk文件拷入手机安装然后刚才解压文件中的Media文件夹打开,两个PDF图打印第一张A4-ObjectScanningTarget.pdf,主要是用来辅助扫描的。好了,接下来就是扫描三维物体。将瓶

  9. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  10. ruby - 在没有基准或时间的情况下用 Ruby 测量用户时间或系统时间 - 2

    因为我现在正在做一些时间测量,我想知道是否可以在不使用Benchmark类或命令行实用程序time的情况下测量用户时间或系统时间。使用Time类只显示挂钟时间,而不显示系统和用户时间,但是我正在寻找具有相同灵active的解决方案,例如time=TimeUtility.now#somecodeuser,system,real=TimeUtility.now-time原因是我有点不喜欢Benchmark,因为它不能只返回数字(编辑:我错了-它可以。请参阅下面的答案。)。当然,我可以解析输出,但感觉不对。*NIX系统的time实用程序也应该可以解决我的问题,但我想知道是否已经在Ruby中实

随机推荐