1.前言

本博客是中山大学3D游戏编程与设计大作业

2.作业要求

1.按参考资源要求,制作一个粒子系统

2.使用3.3节介绍,用代码控制使之在不同场景下效果不一样。

3.用到的资源

3.1 基础资源,主要用于烟花弹的外观以及烟花弹爆炸后产生的烟雾。

3.2地图资源,从assets store中下载的免费资源,让最后展示烟花效果更好看。

4.制作过程

4.1 烟花弹的制作

要制作烟花,需要先制作烟花爆炸前的烟花炮弹。

首先在场景中添加一个粒子系统,然后将该粒子系统transform的rotation设置为(-90,0,0),这样粒子系统就会向上发送粒子。

然后设置该粒子系统的基础设置,首先把Start Size和Start Speed等设置为合适的值,而Start Lifetime为粒子的存活时间,这里设置为Random Between Two Constants,规定为2-4之间的随机数,这样烟花就会在发射后不同时间爆炸,同时将Gravity Modifier设置为0.3,这样烟花发射后就有抛物线的弧度。

将粒子系统的粒子发射速率设置为1。

将粒子系统的发射半径设置为0.01,发射角度规定为35°以内,这样看起来就有个漏斗形状,更符合烟花弹发射的效果。

shape设置

粒子系统形状效果

勾选Size over Lifetime,设置粒子的大小随时间而改变,这样烟花弹就有一个忽明忽暗的效果,更加逼真,如图所示。

再把基础资源中的火焰材料拖到粒子系统的Renderer中的material中,让烟花弹更加好看。

烟花弹效果如下,可以看到烟花弹忽大忽小。

4.2烟花弹拖尾制作

为了让烟花弹的效果更加逼真,给烟花弹添加一个拖尾效果。勾选Sub Emitters,并添加一个子发射器命名为tail。

设置tail的基础设置,拖尾粒子的存活时间应该比较短,设置为1-2之间的随机值,大小也比较小,设置为0.5,并且也需要添加重力效果,设置为0.2。

将tail粒子的形状设置为球形,并将半径设置为0.003。

为了使拖尾效果更加炫酷,需要勾选Color over Lifetime,使得粒子颜色随时间的变化而改变。

同时为了拖尾粒子消失不那么突兀,勾选Size over Lifetime,使得粒子大小随着时间推移变小,最终消失。

拉长粒子,设置Speed Scale为0.15,Length Scale为2,这样粒子就会边长,让拖尾效果更加逼真。

为了使拖尾效果更加明显,给tail添加一个子发射器tails'tail,该子发射器设置与tail大同小异,这里不再详细介绍。

烟花弹拖尾最终效果如下所示

4.3 增加烟雾效果

拖尾效果做完,我们还需要增加烟花爆炸的效果,在这之前我们先添加一个爆炸时产生的烟雾效果。首先我们要在烟花弹的Sub Emitters添加一个子发射器smoke,在death时触发。

然后设置smoke的属性,首先也要设置基本设置,其中值得关注的是Start Size设置为40-70之间的随机值,这是因为烟雾大小不是一定的,而Start Rotation设置为0°-180°之间的随机值,这是为了让烟雾看起来每一次都不一样。

然后再设置Emission,由于每次爆炸烟雾只要出现一次就行,所以设置为只进行一轮爆炸且爆炸只产生一个粒子。

然后再设置Size over Lifetime,设置烟雾大小随时间变大,这样就有烟雾扩散的效果。

最后选择一个烟雾材料并拖动到Renderer的material中,这里用的是3.1中说到的资源中的烟雾(选中的那个烟雾)。

最终烟雾效果如下所示(为了使效果更加明显这里把背景调回了默认背景)

4.4 增加烟花爆炸的效果

在smoke上增加三个子发射器,在烟雾产生的时候这三个子发射器也同时发射粒子,这三个发射器分别发射红色,蓝色,绿色粒子,这样能让烟花更加好看。

这里只详细介绍红色的子发射器,其他颜色的发射器只是颜色不同,其他都一样。

首先设置基本设置,每个烟花粒子的存活时间,初始速度,大小都不同,所以都设置为两个常数之间的随机值。颜色设置为红色,重力设置为0.2。

设置Emission,由于烟花每次爆炸都会产生大量粒子,且粒子的数量不定,所以就将粒子数量设置在700-900之间。

设置Size over Lifetime ,让粒子大小随时间变小,营造烟花逐渐熄灭的效果。

最后跟拖尾效果一样,为了让爆炸更加炫酷,再添加一个子发射器redflame,设置与父发射器相似,只是把粒子大小调小了一些。

添加了三个不同颜色的子发射器后效果如下(这里为了使效果更明显,将烟花弹发射速率调为原来的3倍)

4.5 控制脚本

编写一个含两个按钮的脚本,两个按钮分别使烟花发射开始和暂停。编写完将脚本挂载在空物体上,然后将粒子系统拖到该脚本上即可控制粒子系统。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class mono1 : MonoBehaviour
{public ParticleSystem particleObject1; public GUIStyle buttonstyle;string str="";void OnGUI(){if (GUI.Button (new Rect (0,Screen.height-55,55,55), "放烟火")) {particleObject1.Play();   }if (GUI.Button (new Rect (55,Screen.height-55,80,55), "停止烟火")) {particleObject1.Stop();}}// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){}
}

添加后效果如下(记得把粒子系统的play on awake取消勾选,这样烟花就会等按下按钮之后才开始放)

5. 应用到场景

将制作完的烟花应用到3.2中下载的资源场景中。

因为这里有六个粒子系统,需要稍微修改下脚本代码,如下。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class mono2 : MonoBehaviour
{public ParticleSystem particleObject1; public ParticleSystem particleObject2;public ParticleSystem particleObject3;  public ParticleSystem particleObject4;  public ParticleSystem particleObject5;  public ParticleSystem particleObject6;  public GUIStyle buttonstyle;void OnGUI(){if (GUI.Button (new Rect (0,Screen.height-55,55,55), "放烟火")) {particleObject1.Play();particleObject2.Play();particleObject3.Play();particleObject4.Play();particleObject5.Play();particleObject6.Play();}if (GUI.Button (new Rect (55,Screen.height-55,80,55), "停止烟火")) {particleObject1.Stop();particleObject2.Stop();particleObject3.Stop();particleObject4.Stop();particleObject5.Stop();particleObject6.Stop();}}// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){}
}

最终结果如下。

6.代码下载

代码仓库 将代码下载后替代掉原来的assets文件夹,然后打开myscene->Scene->flamescene,运行即可。

7.演示视频

演示视频

使用Unity粒子系统放烟花相关推荐

  1. 使用unity粒子系统制作烟花

    选择菜单栏Game Object->Effects->Partical System命令,在场景中创建一个粒子系统对象,作为烟花效果 粒子系统主要由Inspector视图中的Partica ...

  2. Unity 倒放粒子系统(循环倒放)

    Unity 倒放粒子系统(循环倒放) 在电影信条中有关于物体倒放的特效,恰巧在制作一个独立游戏的时候,我们也用到了粒子特效的反向播放,在查阅一些资料后,最终使用了unity官方公众号给出的一个关于倒放 ...

  3. unity3D烟花制作-来放烟花吧!

    3D游戏第八次作业-烟花粒子效果实现 结果展示 先来个结果镇楼 下面是一个动画演示: 最终效果演示 本次项目使用的资源: Unity Particle Pack:使用的Flame 01以及Twinkl ...

  4. unity 粒子系统面板参数释义

    **unity 粒子系统面板参数释义** 如何在Unity中实现粒子效果? 首先,右键点击 Hierarchy栏,选择effects->Particle System,这样你就新建了一个粒子系统 ...

  5. 【UnityShader】自定义unity粒子系统使用的shader

    前几天特效那边让改一下一个粒子系统使用的shader,说是shader的一个值希望关联上粒子的某个值. 我不假思索地就准备写个脚本挂上去传个值给shader.等脚本写好,测试的时候才突然发现,传值过去 ...

  6. Unity粒子系统创建VFX游戏特效学习教程 Visual Effects in Unity Particle Systems [Beginner’s Guide]

    在Unity中学习高级粒子系统和视觉效果创建.初级到中级 你会学到: 游戏的视觉效果 Unity粒子系统 Unity中的Vfx 创建Unity视觉效果的初级到中级指南 课程获取:Unity粒子系统创建 ...

  7. c语言烟花百度云,C语言实现放烟花的程序

    这是一个利用C语言编写放烟花的程序(同时也可以播放音乐),供大家参考,具体内容如下 代码如下 #pragma once #include #include //图形界面库头文件 #include // ...

  8. 快过年了,用JS让你的网页放烟花吧

    如何实现的? 我自己是一名从事了多年开发的web前端老程序员,前段时间我花了一个月整理了一份最适合学习的web前端学习干货,各种框架都有整理,送给每一位前端小伙伴,想要获取的可以添加下面的QQ群,即可 ...

  9. 2022跨年烟花代码(六)HTML5鼠标点击页面放烟花特效

    HTML5鼠标点击页面放烟花特效 html代码 <!DOCTYPE html> <html> <head><meta http-equiv="Con ...

最新文章

  1. 2.Excel公式函数
  2. asp.net如何给每张图片动态添加水印方法(二)
  3. Linux之CPU物理核与逻辑核
  4. Android轩辕剑之ActionBar之一
  5. 7-3 高空坠球 (20 分)
  6. Innosetup打包自动下载.net framework 动态库及替换卸载程序图标.
  7. 金士顿DT100G3(16G) U盘修复
  8. XUI Android原生的UI框架的配置指南
  9. centos官网下载地址
  10. python基础知识及数据分析工具安装及简单使用(Numpy/Scipy/Matplotlib/Pandas/StatsModels/Scikit-Learn/Keras/Gensim))
  11. matlab 7y30,屏幕及音响表现出众_华硕 灵焕3(M3 7Y30/8GB/256GB)_笔记本评测-中关村在线...
  12. SQL-按日期不间断统计
  13. hive实战——谷粒影音
  14. 关闭谷歌google右侧百度热搜(下方无偿链接),亲测有效
  15. 闪聚支付-第1章-项目介绍
  16. Android连接WiFi
  17. 峰会/论坛现场签约怎么签?君子签提供区块链电子签约技术支持
  18. 中图分类号和UDC查询
  19. nginx配置移动端与PC端访问规则
  20. C++ 概率算法 利用蒙特卡罗算法计算圆周率

热门文章

  1. windows10系统自带输入法,简体输入繁体字
  2. i512500h和i710875h哪个好
  3. 程序员是一群什么人?
  4. 5G智慧园区整体架构方案(ppt)
  5. 日常数据库练习题(每天进步一点点系列)
  6. 黑产白皮书 DDoS 篇——乌云笼罩下的产业百态
  7. 《MySQL数据操作与查询》- 维护学生信息、老师信息和成绩信息 支持按多种条件组合查询学生信息和成绩信息
  8. DOS操作系统、常用DOS命令简介
  9. 动态链接库(DLL)初始化例程失败 解决方法
  10. 抢先报名 Google 谷歌 菊与刀的金矿岛国 - 细说日本游戏出海 线上研讨会