Unity使用Particle System制作爆炸特效
技术概述
如果游戏里有爆炸的要素,那么很可能需要爆炸的粒子特效。调制爆炸粒子特效的几个关键模块是:Emission、Shape、Texture Sheet Animation、Color over Lifetime、Size over Lifetime、Renderer。
技术描述
效果预览
效果如上,爆炸分为三个部分:
中间的爆炸燃烧烟雾
周围溅射的火花
爆炸时的能量冲击
效果制作
燃烧
该粒子用到的素材
用这个素材创建材质
新建一个Particle System,并把Renderer模块里的Material设置为刚才新建的材质
基本参数的设置可以参考下面
因为是爆炸,事件持续不需要很长,但有燃烧,所以也不会太短。不需要他去移动,所以速度设置为零。
Emission设置参考如上。Rate over Time设置为零,因为烟雾是瞬间产生的。反而添加一个Burst,来瞬间发射粒子。主要设置Count参数。
Shape主要设置发射空间的形状,爆炸一般是圆的吧,3D就设置Sphere,2D就设置Circle,圆的半径视爆炸范围而定。Radius Thickness设置为0让它在整个圆里产生粒子。
Texture Sheet Animation是重点。
Mode设置成Grid,Tiles设置成6✖6,因为上面素材的烟雾就是6✖6的。
Start Frame即起始帧设置成第一帧0,Frame over Time设置成从0到35的直线,这样每个粒子都会播放上面素材的烟雾动画
溅射粒子
在刚刚的燃烧粒子里创建一个子粒子系统,这个粒子的材质用默认材质就好。基础参数参考下图
关键在于Start Speed和Start Lifetime,速度相对大一些,起始寿命小一些,适当的增加随机性。可以设置Gravity Modifier让溅射的粒子会有受重力下落的效果。
一样使用Bursts。这里设置了Cycles是为了让它有“持续”但是”瞬间“的感觉。每间隔0.01秒发射30个粒子,发射5次。在50毫秒里就完成了这5次发射,所以也不明显,这里根据自己需要设计。
Shape没什么好说的,圆形就完事了。
随着时间流逝,溅射的粒子燃烧殆尽。可以在透明里加个渐变。
Renderer里的Render Mode设置成Stretched Billboard,这样溅射的火花就会在它速度的方向上拉长,更接近真实的视觉效果。
能量冲击
素材
创建一个新的Particle System作为第一个粒子的子物体,用上面的素材创建材质,并应用到Renderer的Material里
基本参数
Start Lifetime同样短一些。Start Speed为零,因为我们不希望它移动,只希望它的大小改变,这个在后面设置。Start Size设置一个合理的值,因为后面的设置会受这个影响。
Emission可以自行设置。如果想要有多重冲击波,建议改Cycles和Interval。如果使用Rate over Time,还要适当修改基本参数里的Duration,让它不会发射太久。
Shape使用Circle即可。
Color over Lifetime里添加一个渐变消失,可以选喜欢的颜色。
Size over Lifetime设置让他从小大大,可以直线可以曲线,大小按照自己需求。
总结
以上就是开头爆炸示例的参数设置,内容覆盖了Unity粒子系统的基本使用。可以在这个基础上添加爆炸后的硝烟或者镜头晃动。
可能遇到的问题
- 2D项目可能遇到这样奇怪的情况,Scene视图里可以看到粒子,但是Game视图里却只能看到一部分,有时候还会消失不见。
这是因为,如果在Shape里选择的是3D发射形状,粒子具有z轴速度,当粒子沿着z轴移动到摄像机范围外,或者移动到某些图层下面的时候就会看不见。
可以选择2D的发射形状,或者设置相机的范围,又或者设置Renderer里的Sorting Layer或者Sorting In Layer,又或者在Limit Velocity over Lifetime里限制粒子的z速度。
- Color over Lifetime不起作用
在这个粒子系统使用的材质里,去掉Emission的选项。
参考资料
[Unity 活动]-社区直播|几种粒子效果的制作教学 Getting started with Particle Systems