使用Unity粒子系统放烟花
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粒子系统放烟花相关推荐
- 使用unity粒子系统制作烟花
选择菜单栏Game Object->Effects->Partical System命令,在场景中创建一个粒子系统对象,作为烟花效果 粒子系统主要由Inspector视图中的Partica ...
- Unity 倒放粒子系统(循环倒放)
Unity 倒放粒子系统(循环倒放) 在电影信条中有关于物体倒放的特效,恰巧在制作一个独立游戏的时候,我们也用到了粒子特效的反向播放,在查阅一些资料后,最终使用了unity官方公众号给出的一个关于倒放 ...
- unity3D烟花制作-来放烟花吧!
3D游戏第八次作业-烟花粒子效果实现 结果展示 先来个结果镇楼 下面是一个动画演示: 最终效果演示 本次项目使用的资源: Unity Particle Pack:使用的Flame 01以及Twinkl ...
- unity 粒子系统面板参数释义
**unity 粒子系统面板参数释义** 如何在Unity中实现粒子效果? 首先,右键点击 Hierarchy栏,选择effects->Particle System,这样你就新建了一个粒子系统 ...
- 【UnityShader】自定义unity粒子系统使用的shader
前几天特效那边让改一下一个粒子系统使用的shader,说是shader的一个值希望关联上粒子的某个值. 我不假思索地就准备写个脚本挂上去传个值给shader.等脚本写好,测试的时候才突然发现,传值过去 ...
- Unity粒子系统创建VFX游戏特效学习教程 Visual Effects in Unity Particle Systems [Beginner’s Guide]
在Unity中学习高级粒子系统和视觉效果创建.初级到中级 你会学到: 游戏的视觉效果 Unity粒子系统 Unity中的Vfx 创建Unity视觉效果的初级到中级指南 课程获取:Unity粒子系统创建 ...
- c语言烟花百度云,C语言实现放烟花的程序
这是一个利用C语言编写放烟花的程序(同时也可以播放音乐),供大家参考,具体内容如下 代码如下 #pragma once #include #include //图形界面库头文件 #include // ...
- 快过年了,用JS让你的网页放烟花吧
如何实现的? 我自己是一名从事了多年开发的web前端老程序员,前段时间我花了一个月整理了一份最适合学习的web前端学习干货,各种框架都有整理,送给每一位前端小伙伴,想要获取的可以添加下面的QQ群,即可 ...
- 2022跨年烟花代码(六)HTML5鼠标点击页面放烟花特效
HTML5鼠标点击页面放烟花特效 html代码 <!DOCTYPE html> <html> <head><meta http-equiv="Con ...
最新文章
- 2.Excel公式函数
- asp.net如何给每张图片动态添加水印方法(二)
- Linux之CPU物理核与逻辑核
- Android轩辕剑之ActionBar之一
- 7-3 高空坠球 (20 分)
- Innosetup打包自动下载.net framework 动态库及替换卸载程序图标.
- 金士顿DT100G3(16G) U盘修复
- XUI Android原生的UI框架的配置指南
- centos官网下载地址
- python基础知识及数据分析工具安装及简单使用(Numpy/Scipy/Matplotlib/Pandas/StatsModels/Scikit-Learn/Keras/Gensim))
- matlab 7y30,屏幕及音响表现出众_华硕 灵焕3(M3 7Y30/8GB/256GB)_笔记本评测-中关村在线...
- SQL-按日期不间断统计
- hive实战——谷粒影音
- 关闭谷歌google右侧百度热搜(下方无偿链接),亲测有效
- 闪聚支付-第1章-项目介绍
- Android连接WiFi
- 峰会/论坛现场签约怎么签?君子签提供区块链电子签约技术支持
- 中图分类号和UDC查询
- nginx配置移动端与PC端访问规则
- C++ 概率算法 利用蒙特卡罗算法计算圆周率