技术概述

如果游戏里有爆炸的要素,那么很可能需要爆炸的粒子特效。调制爆炸粒子特效的几个关键模块是:EmissionShapeTexture Sheet AnimationColor over LifetimeSize over LifetimeRenderer

技术描述

效果预览

java类爆炸特效 爆炸特效制作_java类爆炸特效

效果如上,爆炸分为三个部分:

中间的爆炸燃烧烟雾

java类爆炸特效 爆炸特效制作_3D_02

周围溅射的火花

java类爆炸特效 爆炸特效制作_Time_03

爆炸时的能量冲击

java类爆炸特效 爆炸特效制作_粒子系统_04

效果制作

燃烧

该粒子用到的素材

java类爆炸特效 爆炸特效制作_粒子系统_05

用这个素材创建材质

java类爆炸特效 爆炸特效制作_java类爆炸特效_06

新建一个Particle System,并把Renderer模块里的Material设置为刚才新建的材质

基本参数的设置可以参考下面

java类爆炸特效 爆炸特效制作_粒子系统_07

因为是爆炸,事件持续不需要很长,但有燃烧,所以也不会太短。不需要他去移动,所以速度设置为零。

java类爆炸特效 爆炸特效制作_Time_08

Emission设置参考如上。Rate over Time设置为零,因为烟雾是瞬间产生的。反而添加一个Burst,来瞬间发射粒子。主要设置Count参数。

java类爆炸特效 爆炸特效制作_粒子系统_09

Shape主要设置发射空间的形状,爆炸一般是圆的吧,3D就设置Sphere,2D就设置Circle,圆的半径视爆炸范围而定。Radius Thickness设置为0让它在整个圆里产生粒子。

Texture Sheet Animation是重点。

java类爆炸特效 爆炸特效制作_java类爆炸特效_10

Mode设置成Grid,Tiles设置成6✖6,因为上面素材的烟雾就是6✖6的。

Start Frame即起始帧设置成第一帧0,Frame over Time设置成从035的直线,这样每个粒子都会播放上面素材的烟雾动画

溅射粒子

在刚刚的燃烧粒子里创建一个子粒子系统,这个粒子的材质用默认材质就好。基础参数参考下图

java类爆炸特效 爆炸特效制作_粒子系统_11

关键在于Start SpeedStart Lifetime,速度相对大一些,起始寿命小一些,适当的增加随机性。可以设置Gravity Modifier让溅射的粒子会有受重力下落的效果。

java类爆炸特效 爆炸特效制作_Time_12

一样使用Bursts。这里设置了Cycles是为了让它有“持续”但是”瞬间“的感觉。每间隔0.01秒发射30个粒子,发射5次。在50毫秒里就完成了这5次发射,所以也不明显,这里根据自己需要设计。

java类爆炸特效 爆炸特效制作_Time_13

Shape没什么好说的,圆形就完事了。

java类爆炸特效 爆炸特效制作_3D_14

随着时间流逝,溅射的粒子燃烧殆尽。可以在透明里加个渐变。

java类爆炸特效 爆炸特效制作_java类爆炸特效_15

Renderer里的Render Mode设置成Stretched Billboard,这样溅射的火花就会在它速度的方向上拉长,更接近真实的视觉效果。

能量冲击

素材

java类爆炸特效 爆炸特效制作_Time_16

创建一个新的Particle System作为第一个粒子的子物体,用上面的素材创建材质,并应用到Renderer的Material里

基本参数

java类爆炸特效 爆炸特效制作_3D_17

Start Lifetime同样短一些。Start Speed为零,因为我们不希望它移动,只希望它的大小改变,这个在后面设置。Start Size设置一个合理的值,因为后面的设置会受这个影响。

java类爆炸特效 爆炸特效制作_Time_18

Emission可以自行设置。如果想要有多重冲击波,建议改CyclesInterval。如果使用Rate over Time,还要适当修改基本参数里的Duration,让它不会发射太久。

Shape使用Circle即可。

java类爆炸特效 爆炸特效制作_Time_19

Color over Lifetime里添加一个渐变消失,可以选喜欢的颜色。

java类爆炸特效 爆炸特效制作_Time_20

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的选项。