设计火势控制脚本(为VR灭火功能做前期准备)
由于unity的粒子系统Particle System我并不擅长,所以我用的火焰、烟雾粒子特效和一些音效都是从网上找的,并不是自己制作。只是做了一些修改。毕竟从头创建一个粒子效果太费时间了,可以根据自己的需要从网上找,或者从Unity自带的资源商店“Asset Store”里下载使用,我这里用的就是Unity Particle Pack5.x中的一部分,里面包含了大部分粒子特效,稍稍修改丰富一下就可以用的自己的项目中了,或者需要我使用的资源的话可以留言或私信我。
好了,开始正题:
导入火焰和烟雾粒子特效、火焰燃烧音效
将粒子特效资源导入项目中,找到火焰预制体拖入场景中,做微调:
将不需要的物体隐藏掉,布置好火源位置,“Fire”对象的“Box Collider”组件是将来实现灭火功能的要素,用于灭火器喷射粒子的碰撞,适当调整box collider的厚度,设置mesh renderer为非激活状态:
添加火焰音效:直接在“fire”对象上添加组件“Audio Source”把音频文件拖入,将“Play on awake”(自动播放)和“Loop(循环)”设置为"true"(勾选),将“spatial blend”(空间混合)设置为1使声音呈现完全的3D效果,将“3D sound setting(三维声音设置)”中的"Max distance"调小,设置40.距离火源40米以外无法听到着火的声音,进入40米的范围后,离火源越近火的声音越大,自己设置一个比较合理的值,用来模拟声音的范围,视实际情况而定吧
火势控制脚本的设计思路
实际情况中,火应该是受到灭火措施后逐渐熄灭的,所以定义一个生命值上限和一个生命值表示火势大小,定义一个熄灭系数和一个恢复系数,放在Update每帧计算出最新的生命值,根据生命值更新火势,赋值给火粒子系统,改变它的transform.localScale。为1时火最大,为0时火熄灭;定义一个可以修改灭火系数的公开函数,给后期灭火脚本调用。
代码实现
代码注释很明白了吧,就不一一解释了。
将脚本挂载到fire对象上,赋值,运行调整熄灭系数的值大于恢复系数,可以看到火势变小到熄灭的过程:
初步完成了火势控制的功能了,后面就是VR手柄拾取灭火器灭火了…