前言
这是本学期最后一次作业,本文通过粒子系统实现烟花效果
相机背景
设置相机背景为黑色,方便显示烟花效果
烟花制作
该粒子系统主要分为两部分,主体部分带动烟花升至空中,另一部分为爆开的烟花,然后两部分都带上环绕的粒子
Sub为伴随粒子系统,制作一份复制一份到Burst下
Fireworks制作
基础设置
烟花上升很快,生命周期设置为为1.2,速度设置为55
颜色设置为红黄两种
Emission
每次发射一枚烟花
Shape
发射形状为锥形,角度调小点可以射高点
Velocity over Lifetime
设置粒子速度由1到0模拟烟花速飞升度变慢
Sub Emitters
Trails
Renderer
先制作雪花图片,然后用于制作材质,在renderer中添加材质
伴随粒子系统制作
基础设置
Emission&Shape
Size over Lifetime
Rotation over Lifetime&Renderer
Burst制作
基础设置
Emission&Shape
Size over Lifetime&Sub Emitters&Trails
Renderer
同其他粒子一致
控制
控制烟花开始停止,变色
public class Fireworks : MonoBehaviour
{
// Start is called before the first frame update
public ParticleSystem[] fireworks;
int cnt=0;
int l;
void Start()
{
GameObject[] tmp;
tmp = GameObject.FindGameObjectsWithTag("Fireworks");
l=tmp.Length;
fireworks = new ParticleSystem[l];
for(int i = 0; i < l; ++i)
{
fireworks[i] = tmp[i].GetComponent<ParticleSystem>();
fireworks[i].Stop();
}
}
private void OnGUI() {
if (GUI.Button(new Rect(Screen.width/2-150, Screen.height-100, 80, 50), "Start")) fireworks[cnt].Play();
if (GUI.Button(new Rect(Screen.width/2-50, Screen.height-100, 80, 50), "Pause")) fireworks[cnt].Stop();
if (GUI.Button(new Rect(Screen.width/2+50, Screen.height-100, 80, 50), "Change")){
fireworks[cnt].Stop();
cnt++;
cnt%=l;
fireworks[cnt].Play();
}
}
}