如何利用粒子系统在unity制作一个烟花(粒子系统学习向)

hello ,大家好今天给大家讲点不一样的东西,粒子系统,在unity里面很多特效都是通过vxeffects插件做的,在了解深入这个之前,我们先了解一下基础的粒子系统,这里我们通过一个烟花特效来了解一下unity的粒子系统particle system

那么怎么做烟花呢,首先我们来看看博主的这个烟花特效是什么样子的吧

烟花特效

如图所说这是一个烟花特效,其实制作这样一个特效并不是很难不过这个也是可以成为了解各个粒子系统的属性的一个渠道,我们在制作时候顺带普及相关知识让我们开始吧

1、烟花结构:烟花的基本结构为发射的轨道粒子和绽放的花蕊粒子,所以我们设置两个particle system(后面简称ps)

基础设置父物体如图如下,lifetime 生命周期我们设置两个颜色

其他属性我们来查看一下首先emissions的属性

rate over time 代表单次发射的一个粒子数目,我们直接设置为1一次射出一个。下面的bursts是通过play 某个条件一次性爆发射出。我们待会的烟花花蕊需要这个

shape,也是代表发射口的对应的角度,我们不需要特别大的角度,使用锥形即可,后面的angle就是偏移角度了跟发射口相差的角度,radius 半径,这些都是默认,

接着我们调整velocity 属性,我们设置一下这个发射速度,为响应物理速度,设置一个,逐步减小的速度

接着也是最重要的sub emiiter 这个代表着signal也是信号,当该粒子处于某个状态就触发另一个粒子,产生额外的效果,如图所示,我们想要做烟花发射,烟花轨道到达生命周期后,消失死亡后我们就让他出现爆炸的粒子花蕊特效所以这里我们选择death创建一个blast花蕊特效

烟花肯定少不了尾翼trail,这里我们设置尾翼如下lifetime比正常时间略短,mode里面分part 和ribbon那个我们选择默认,ribbon是粒子发射后所有的粒子连成一片,我们这一次就发射一个相当于连了个null,ratio也就是概率,我们选择1默认所有的粒子都有100%获得拖尾

剩下几个属性我们颜色改成如图所示

render我们使用默认材质如图

好的接着我们来看看我们的花蕊该如何编写吧

花蕊为名字blast

首先就是基础配置我们设置如下设置对于liftetime和speed做一个范围限制选择random between two constantants,重力不用管毕竟是通过爆炸喷射的,可0可1,其他的默认

重点是我们的emissions,我们这里要手动触发而不是自动生成必须rate设置为0仅通过burst和隔壁的sub emitter来触发爆炸,这里shape选择球形的喷射范围,更符合烟花,也可以是donat甜甜圈

我们接着可以设置size over lifetime调整随着生命周期大小而变化,,然后就是尾翼,因为这里的本体颜色我们已经设置了红色,我们设置默认颜色即可,为了增加多样性我们设置如图随机大小。

接着材质我们选择新建一个material 设置一个新的米字的图片作为爆炸的尾部的特效材质

新建材质如图所示,设置对应的图片放入左边地方albedo中,设置渲染为fade就可以了

最后我们来看看我们涉及的特效的知识点分布是什么吧

主模块(Main Module)------ 基础属性

这是粒子系统最顶层的"总管"模块,Duration(持续时间) 就在这里:

  • Duration(持续时间) :粒子系统发射一轮 所持续的总时长(秒)。如果勾选了下方的 Looping(循环),系统会每隔 Duration 秒重复发射一轮。

  • Looping(循环):是否无限循环播放。

  • Prewarm(预热) :勾选后,系统会在启动时模拟运行一个完整的 Duration 周期,让粒子在游戏一开始就已经充满画面(常用于烟雾、火焰)。

  • Start Delay(启动延迟):系统开始发射前的等待时间。

  • Start Lifetime(初始生命周期) :每个粒子从出生到消亡存活的总时长(秒)。数值越大,粒子飘得越远、存在越久。

  • Start Speed(初始速度):粒子刚产生时的运动速度。

  • Start Size(初始大小):粒子刚产生时的尺寸(可设为随机区间,如 0.5~1.5)。

  • Start Color(初始颜色):粒子刚产生时的颜色。

  • Gravity Modifier(重力影响):粒子受场景重力影响的大小(0 为无重力,数值越大下落越快)。

  • Simulation Space(模拟空间)Local(局部,粒子跟随物体移动)或 World(世界,粒子发射后固定在原地不随物体移动)。


2. Emission(发射模块)------ 控制"数量"

决定粒子何时、以多大速率被发射出来:

  • Rate over Time(随时间发射速率):每秒发射多少个粒子。例如设为 10,则每秒持续喷出 10 个。

  • Rate over Distance(随距离发射速率):物体每移动 1 个单位距离,发射多少个粒子(用于移动中的拖尾痕迹)。

  • Bursts(爆发/突发) :在特定时间点一次性瞬间喷出大量粒子(常用于爆炸、开枪火花)。可以设置多个爆发点,支持循环。


3. Shape(形状模块)------ 控制"出生位置和方向"

决定粒子从哪个几何形状的哪个部位喷出来,以及初始飞行方向:

  • Shape(形状类型) :下拉菜单可选 Sphere(球体)、Cone(锥体/圆锥)、Box(立方体)、Mesh(网格表面)、Circle(圆环)等。

  • Radius(半径):形状的大小。例如球体半径越大,粒子从越大范围的球面喷出。

  • Angle(角度)(锥体模式时):决定锥体张角。0° 为一束激光,90° 为宽大的喷泉。

  • Emit from(发射部位)Base(表面)、Volume(体积内部)、Edge(边缘)等。

  • Random Direction(随机方向):勾选后粒子会在发射方向周围随机散射,制作扩散效果。

  • Align to Direction(对齐方向):让粒子的朝向与其运动方向一致(常用于箭头、子弹)。


4. Size over Lifetime(生命周期内大小变化)

控制一个粒子从出生到死亡,其大小如何随时间改变:

  • 曲线图(Curve):横轴是粒子生命的 0%~100%,纵轴是大小倍数。你可以拖拽曲线,做出"从小到大再缩小"(如火花)或"慢慢变大"(如烟雾)的效果。

  • Separate Axes(独立轴向):勾选后,可以分别控制 X、Y、Z 轴的大小变化,实现"压扁拉长"的非均匀缩放(例如落叶飘动)。

5. Size over Lifetime(生命周期内尺寸变化)

注意:纯"Size"属性(起始大小)在主模块里,这里特指专门控制"大小如何随时间变"的模块。

  • 曲线图(Curve):核心属性。横轴为粒子生命进度(0%~100%),纵轴为尺寸倍数。常见用法:爆点火花(从0→大→0)、烟雾(从0逐渐膨胀变大)。

  • Separate Axes(独立轴向) :默认关闭(均匀缩放)。勾选后,可以分别独立控制 X、Y、Z 三个轴的大小曲线。

    • 实操场景:做飘落的树叶时,让 X 轴不变,Y 轴压扁(让叶子旋转时看起来变窄),模拟透视翻转效果。

    • 下方会展开 X、Y、Z 三条独立曲线供调节。


6. Trails(拖尾/轨迹模块)

之前我详细列过全部属性,这里给你一个 "功能分类式"速查总结,方便记忆:

  • 基础开关Mode 选 Particles(单个拖尾)或 Ribbon(带状连接)。

  • 长短控制Lifetime(拖尾持续秒数,越大尾巴越长) + Minimum Vertex Distance(顶点间距,越小曲线越顺滑,但耗性能)。

  • 继承关系Die with Particles(粒子一死尾巴立刻消失) vs World Space(尾巴留在原地不跟着物体跑)。

  • 外观纹理Texture Mode(Stretch 拉伸整条 / Tile 平铺重复)+ Texture Scale(平铺倍数)。

  • 形态大小Size affects Width(粒子大头,尾巴就粗)。

  • 颜色/宽度渐变

    • Color over Lifetime(随时间变色,如尾巴从红变透明)。

    • Color over Trail(随尾巴长度变色,如头蓝尾紫)。

    • Width over Trail(随尾巴长度变粗细,如头粗尾细)。


7. Sub Emitters(子发射器模块)

这是粒子系统里的 "连锁反应" 触发器。当母粒子发生特定事件时,会额外生成一个全新的粒子系统(子粒子)。

  • 触发条件(下拉选择)

    • Birth(出生时):母粒子刚喷出来的瞬间,触发子粒子(例如火花喷出时自带一圈烟雾)。

    • Death(死亡时):母粒子消亡的瞬间爆炸,触发子粒子(例如烟花弹炸开成满天星)。

    • Collision(碰撞时):母粒子撞到墙壁的瞬间,触发子粒子(例如水滴落地溅起水花)。

    • Trigger(触发器):配合触发器等高级用法。

  • Inherit(继承选项) :子粒子可以从母粒子身上继承属性,包括:

    • 位置(Position)、旋转(Rotation)、大小(Size)、颜色(Color)、生命周期剩余百分比(Lifetime Progress)。

    • 注意 :如果不想让子粒子继承,将对应选项设为 NoneOff 即可。

  • Emit Probability(发射概率):控制触发时,有百分之多少的概率生成子粒子(避免每次触发都生成,节省性能或制造随机感)。


8. Renderer(渲染器模块)

这是所有粒子的 "最后一公里",决定粒子在屏幕上具体长什么样、怎么摆放、有没有光照和阴影。

  • Render Mode(渲染模式):最常见的几种:

    • Billboard(公告牌) :粒子始终正对相机(做火焰、烟雾、光晕必备)。

    • Stretched Billboard(拉伸公告牌):粒子会沿运动方向拉伸(就是之前看到的 Stretch X/Y 属性,适合做流星、子弹轨迹)。

    • Horizontal / Vertical Billboard:只固定水平或垂直轴向面对相机。

    • Mesh(网格):把粒子渲染成 3D 模型(如石块、金币旋转)。

  • Material(材质):指定粒子使用的图片/材质球(必须使用 Particles/Standard Unlit 等专用 Shader)。

  • Sorting Layer & Order in Layer(排序层和层内顺序) :决定粒子与场景中其他 2D/UI 元素的前后遮挡关系,数值越大越靠前显示。

  • Cast Shadows / Receive Shadows(投射阴影 / 接收阴影):勾选后粒子可以产生或接收光照阴影(性能消耗较大,移动端慎用)。

  • Max Particle Size(最大粒子尺寸) :限制粒子在屏幕上显示的最大像素尺寸,防止粒子离相机太近时巨大到遮住全屏。

  • Flip(翻转):分别沿 X/Y/Z 轴翻转粒子的朝向(用于修正图片方向不对的情况)。

  • Pivot(枢轴点):调节图片中心点偏移(类似锚点),影响旋转和缩放的中心位置。


💡 帮你理清它们的分工(一句话总结):

  • Size = 单个粒子形态膨胀收缩的动态美感;

  • Trails = 运动留下来的 "小尾巴" 光影;

  • Sub Emitters = "套娃" 触发新特效;

  • Renderer = 最终拍板 "怎么展示在屏幕上"

如果你打算做射击拖尾爆炸碎片技能光环,直接告诉我你想实现哪个效果,我可以只挑对应的 3~4 个关键参数给你"开小灶"讲解,绝不让你在满满一屏属性里迷茫。😊

相关推荐
念何架构之路1 小时前
moby-BuildKit(builder-next)
学习·docker·容器
惠惠软件1 小时前
快速生成磁盘目录文件-双击运行a.bat ,可以看到磁盘目录下出现了 文件目录.txt-供大家学习研究参考
windows·学习·文件列表
星恒随风1 小时前
C++ STL 详解:set 与 multiset 的使用、区间查询和算法应用
开发语言·c++·笔记·学习·算法
m4Rk_1 小时前
【论文阅读】Agent 记忆机制(20):RecMem——只在信息反复出现时进行长期记忆巩固
论文阅读·人工智能·学习·开源·github
菩提树下的打坐2 小时前
测试工程与 DevOps / SRE 的边界:三方协作的真实工作流
学习
幸福在路上wellbeing2 小时前
AI 智能体开发 · Day 2 详细学习手册
人工智能·学习
网络安全零基础教程2 小时前
零基础转行网安,前两个月具体该学什么工具
网络·学习·安全·web安全·网络安全
南清的coding日记2 小时前
7.29 Agent八股学习+小程序学习
学习
kdxiaojie2 小时前
Linux 驱动研究 —— V4L2 (14)
linux·运维·笔记·学习