本节我们使用声音混响区域(audio reverb zone)实现一些特殊效果。
什么是混响区域(audio reverb zone)
不同障碍物对声波的反射和吸收能力不同,坚硬平整表面反射声波能力强,松软多孔的表面吸收声波能力强。在坚硬的表面上,声波会被反射产生回声。
场景中的洞穴是一个狭小的空间,由石头组成,因此肯定会产生回声。
Unity自己并没有办法确定声音是否英爱有回声,需要我们自己去识别这些区域。
Unity通过声音混响区域(audio reverb zone)来模拟回声。和Audio Source类似,混响区域有一个最小和最大距离,但它也包含了我们所需要模拟的回声类型的相关设置。在Unity中包含了几种常见的预设回声类型。
创建混响区域
1.在Hierarchy中,点击右键,选择Audio > Audio Rverb Zone。
2. 将其命名为“Cave Reverb”。
3. 将Cave Reverb对象移动到洞穴的正中央位置,调整一下最小距离让其覆盖到洞穴内部大部分地方。
4. 调整最大距离让其刚好超过洞穴入口一点点。
混响区域有一部分可能会超出洞穴的空间。这也没关系,在更加高级一点的场景中,混响区域通常是指在角色进入到回声要发生的地方后被触发生效的,一旦角色离开这个区域就会被关闭。
5. 设置Reverb Preset属性为Cave。
6. 运行场景,让角色跑到洞穴内。
现在角色的额脚步声有回声了。我们可以在场景视图中禁用和启用Cave Reverb游戏物体来对比一下前后区别。
测试不同类型的预设混响效果
有多种不同的Reverb Presets可以选择,我们也可以创建自定义的preset。接下来我们试试不同类型的预设效果。
1. 将Reverb Preset设置为Padded Cell,听听看回声有什么不同。
2. 将Reverb Preset设置为Stone Corridor,听听看有什么不同。
3. 尝试以下其它类型的Reverb Preset。
增加滴水音效
接下来我们为洞穴内添加滴水的音效。滴水的声音应该只在洞穴内被听到,洞穴外滴水的声音逻辑上要被瀑布的声音所覆盖。
1. 创建一个新的Audio Source,取名为“Cave Water Drop”。
2. 将这个Audio Source的audio clip设置为WaterDroplets声音片段。
3. 设置Spatial Blend为3D,启用Loop。
4. 将Volume Rolloff设置为Linear。
5. 设置最小和最大距离到填充洞穴内部空间即可,对于滴水音效来说,这两个距离可以考的很近。
设置声音优先级
多个audio sources能够相互覆盖,这样会在场景中产生更加动态的音景(soundscape)。但这样也会带来一个问题,有些时候一些audio source的声音会丢失。
我们可以设置audio source的优先级来确保重要的声音绝不会丢掉。这可以通过Priority属性来设置,所有audio source的默认优先级设置为128。这个值越低,声音就更重要。
1. 将Cave Water Drop的audio source优先级设置为100,这样能让它的优先级大于所有其它的audio source。
2. 运行场景,听听效果。