Unity开启篇(十一) —— Unity粒子系统简介(二)
版本记录
版本号 | 时间 |
---|---|
V1.0 | 2019.01.17 星期四 |
前言
Unity是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。Unity类似于Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的图型化开发环境为首要方式的软件。其编辑器运行在Windows 和Mac OS X下,可发布游戏至Windows、Mac、Wii、iPhone、WebGL(需要HTML5)、Windows phone 8和Android平台。也可以利用Unity web player插件发布网页游戏,支持Mac和Windows的网页浏览。它的网页播放器也被Mac 所支持。网页游戏 坦克英雄和手机游戏王者荣耀都是基于它的开发。
下面我们就一起开启Unity之旅。感兴趣的看下面几篇文章。
1. Unity开启篇(一) —— Unity界面及创建第一个简单的游戏 (一)
2. Unity开启篇(二) —— Unity界面及创建第一个简单的游戏 (二)
3. Unity开启篇(三) —— 一款简单射击游戏示例 (一)
4. Unity开启篇(四) —— 一款简单射击游戏示例 (二)
5. Unity开启篇(五) —— 一款简单射击游戏示例 (三)
6. Unity开启篇(六) —— Unity动画简介 (一)
7. Unity开启篇(七) —— Unity动画简介 (二)
8. Unity开启篇(八) —— Unity声音简介(一)
9. Unity开启篇(九) —— Unity声音简介(二)
10. Unity开启篇(十) —— Unity粒子系统简介(一)
Changing the Particle System’s Shape
顾名思义,Shape
模块控制该形状中粒子的形状和行为。 您可以选择几种不同的形状;每个都有自己特定的设置。 这使您可以在box
,球体甚至自己的自定义网格中创建粒子!
展开Inspector
中的Shape
模块:
粒子系统的shape
设置为cone
,这意味着粒子从基座发射并以一定角度向外移动:
在上面的示例中,基部为蓝色,角度为绿色,颗粒为红色。 另请注意,在扩展了Shape Module
的同时,您还可以在Scene
视图中看到锥形的方便预览:
更改角度会更改锥体的大小,使其更宽或更窄。 设为7;你会得到一个很好的紧密火焰,随着颗粒的上升而略微扩大。
更改半径会更改基座的大小。 该值越大,粒子在发射时散射的越多。 将此值设置为0.2;这可以确保火焰从火炬的燃料支架内部开始。
运行场景,看看火焰的形状是如何变化的:
这开始看起来像一个真正的火焰! 最后的润色是在整个生命周期中改变颗粒的大小。
Changing Size Over Lifetime
使用Size over Lifetime
模块,您可以创建在其生命周期中生长或收缩的粒子,甚至可以像森林中的萤火虫一样产生脉动。
在粒子系统的模块列表中,查找Size over Lifetime
。 它默认情况下未启用,因此请勾选模块名称旁边的复选框以启用它:
通过单击其名称来展开Size over Lifetime
模块。 这将显示深灰色背景,顶部有一条平曲线:
单击dark gray background
以打开Inspector
底部的曲线编辑器。 横轴表示粒子的寿命,而纵轴表示其大小:
您可以移动红线两端的键来编辑曲线;您还可以通过双击曲线上的任意位置来添加其他键。 要删除key,请右键单击要删除的密钥,然后选择Delete Key
。 您也可以在底部选择一个预设曲线:
如果你想到现实世界中的火焰,它们会随着粒子的增加而缩小。 要模仿此项,请从右侧选择第三个预设以创建向下的斜率:
运行你的场景,看看你的所有火热的荣耀效果!
恭喜! 您已经学会了如何设置一个新的粒子系统并按照你的设计产生美丽的火焰效果。
在下一节中,当您学习创建爆炸效果时,您将创建更好的效果!
Building a Bomb (Effect)
在Unity中制作爆炸效果非常简单。 一旦你知道如何随意实例化粒子,就可以将这种效果用于诸如汽车轮子在刮地面时产生火花的东西,或者弹出和淋浴五彩纸屑的气球。
从项目窗口打开Bomb scene
并播放场景:
场景底部有一层,但除此之外,没有多少事情发生。
要生成炸弹,将炸弹Bomb
预制件拖到炸弹发射器预制槽(Bomb Emitter prefab slot)
中:
再次播放场景以查看您的炸弹出现:
发射器每两秒钟发射一次新炸弹。 为了对物体进行整齐的旋转,你会在它产生时给炸弹增加一些旋转力。
在项目窗口的Scripts
文件夹中打开Bomb
脚本。
将以下代码添加到Start()
:
void Start()
{
float randomX = UnityEngine.Random.Range (10f, 100f);
float randomY = UnityEngine.Random.Range (10f, 100f);
float randomZ = UnityEngine.Random.Range (10f, 100f);
Rigidbody bomb = GetComponent<Rigidbody> ();
bomb.AddTorque (randomX, randomY, randomZ);
}
前三行为x,y和z轴生成10到100之间的随机浮点值。 接下来,您将获得炸弹的Rigidbody
组件的参考并向其施加扭矩。 这导致炸弹以随机方向旋转。 保存脚本更改,返回Unity并运行场景。
这些炸弹现在在它们坠落时旋转得很好 - 但你承诺爆炸!
在Hierarchy中,按Create
按钮并选择Create Empty
。 单击新创建的GameObject
并将其命名为ExplosionParticles
。 接下来,向GameObject
添加一个新的粒子系统。 如果您忘记了如何创建粒子系统,请向上滚动以进行复习。
在粒子系统就位后,将ExplosionParticles GameObject
从层次结构拖动到项目浏览器中的Prefabs
文件夹。 完成后,从Project Hierchy
中删除ExplosionParticles GameObject
。
接下来,在Prefabs
文件夹中选择Bomb Prefab
并将ExplosionParticles Prefab
拖到Bomb
的Explosion Particles Prefab
插槽中,如下所示:
现在,当炸弹接触地面时,会产生一个新的爆炸粒子GameObject
。
播放你的场景,看看爆炸的样子。 如果您遇到粉红色纹理错误,请不要担心,您将要更改纹理。
非常......呃......太神奇了,但爆炸还没有发生!
与火炬一样,您将使用Fire
材料制作粒子系统。
在“项目”窗口中选择“ExplosionParticles Prefab”
,然后在“检查器”中展开Renderer Module
。 将FireMaterial
从项目窗口中的Materials
文件夹拖到Material
插槽,如下所示:
要完成此效果,您必须在主模块Main module
中修改以下设置:
- 1) 将
Duration
设置为0.70。 - 2) 循环应该被禁用。 粒子应该只发射一次。
- 3) 将
Start Lifetime
设置为0.7。 - 4) 将
Start Speed
设置为10。 - 5) 将
Start Size
设置为2。 - 6) 将
Gravity Modifier
设置为1。这将使粒子在末尾略微下降。
运行炸弹场景以查看您构建的内容:
嗯,这是一种爆炸性的,但你绝对可以做得更好!
Building the Explosion
为了改善爆炸,您将改变其中一个粒子系统模块的属性。 你能猜出要改变哪个模块吗? 这是一个提示 - 你已经使用过了。
如果您猜到了Emission
模块,那就给自己一个赞美吧!
展开Emission Module
。 速率是每秒产生的粒子数。 对于这次爆炸,你不会想要一个稳定的粒子流,而是一个突然的爆发。
将Rate over Time
设置为0,现在查看Rate over Distance
,您将看到默认情况下为空的Bursts
列表:
Burst
是在特定时间点一次发射的粒子的集合。
单击右下角的+ button
添加新的Burst
。 您将看到两个字段:Time and Count
:
将Time
保留为0,并将Count
设置为150。这些设置将使粒子系统在系统启动时一次性发出150个粒子。
播放你的场景;现在看起来怎么样?
现在看起来更像是爆炸! 虽然这种爆炸看起来更好,但形状仍然是一个笨拙的锥形,颗粒不会消失 - 它们会消失。 你需要塑造你的爆炸才能给它最后的触感。
首先,展开Shape Module
:
你已经将这个模块用于火炬的火焰形状,但还有几种形状可供选择。 单击显示Cone
的下拉框以查看可用的所有选项:
每个形状以不同的方式影响发射器。 下面的每个动画都显示相同的发射器,只改变了形状:
Sphere
HemiSphere
Cone
Box
Mesh (Cube)
Circle
Edge
您可以从同一系统获得许多不同的效果 - 只需更改形状即可! 要创建逼真的爆炸,请将形状设置为Sphere
。
运行场景,准备被吹走:
现在看起来很棒!
爆炸看起来很好,但有一个小问题。 颗粒消失了。 这是一种不是很理想的效果,看起来并不自然。 粒子应该随着时间的推移而逐渐消失,而不是仅仅消失。
Changing Color
在Inspector
中打开粒子系统后,单击Color over Lifetime
模块旁边的复选框以启用它并展开它。 你会受到Color
这个词的欢迎,旁边看起来像是一个白色的块。 点击white block
:
这将打开渐变编辑器:
颗粒寿命期间的颜色变化表示为渐变条。 起始颜色位于最左侧,粒子将转换为右侧的颜色:
边缘处的四个白色箭头称为markers
,在两个现有标记之间单击以添加新标记。 要删除标记,请将其拖离条形:
顶部标记处理颜色的Alpha
或不透明度,而底部标记处理RGB
(红色,绿色,蓝色)颜色值。
单击最右边的alpha标记。Gradient
编辑器的底部现在显示当前的alpha值:
将滑块一直拖到0,现在,粒子将在其生命周期中逐渐消失。
再次运行场景以查看更改的效果:
到这里就完成了。
在本教程中,您已经了解了粒子系统及其各种模块如何在Unity中工作,以及如何调整它们以获得您想要的效果。 您可以随意尝试不同的设置,看看您可以实现的其他炫酷效果。
有关Shuriken粒子系统及其模块的更多信息,请查看Unity’s official documentation及其 Particle System video。 您还可以在此处了解有关scripting particle systems here的更多信息。
后记
本篇主要讲述了Unity粒子系统,感兴趣的给个赞或者关注~~~