粒子系统-烟花

前言

这是本学期最后一次作业,本文通过粒子系统实现烟花效果

相机背景

设置相机背景为黑色,方便显示烟花效果
在这里插入图片描述

烟花制作

该粒子系统主要分为两部分,主体部分带动烟花升至空中,另一部分为爆开的烟花,然后两部分都带上环绕的粒子
在这里插入图片描述
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();
        }
    }
}

效果展示

在这里插入图片描述

演示视频

参考博客

unity 制作 粒子 烟花

猜你喜欢

转载自blog.csdn.net/lydsera/article/details/128523870