音频流
简介
正如你可能已经在 :ref:`doc_audio_buses`中读到的一样,声音通过AudioStreamPlayer节点发送到每个总线.AudioStreamPlayer有很多种.每一个都会加载一个AudioStream并进行播放.
AudioStream
音频流(audio stream)是一种发出声音的抽象对象. 声音可以来自许多地方,最常见的是从文件系统加载.音频文件可以作为AudioStreams加载并放置在AudioStreamPlayer中.你可以在 导入音频采样 中找到有关支持的格式和格式差异的信息.
AudioStream有不同的类型,例如AudioStreamRandomPitch,它在每次播放声音时随机调整音高(对于某些音效非常有用),可以为频繁播放的声音增加一些变化.
AudioStreamPlayer
这是一个标准的,非位置型的流播放器,可以播放到任意总线. 在5.1立体声中,它可以将音频发送到立体声混音或前置扬声器.
AudioStreamPlayer2D
这是AudioStreamPlayer的一种变体,它将声音发散到2D位置环境中. 当靠近屏幕左侧时,声像将向左偏移. 靠近右侧时,则向右偏移.
注解
Area2D可以将它们包含的AudioStreamPlayer2D的声音转移到特定的总线上.这样就可以创造具有不同混响或声音质量的总线,从而处理在游戏世界的特定区域中发生的动作.
AudioStreamPlayer3D
这是AudioStreamPlayer的一种变体,它将声音发散到3D位置环境中.根据播放器相对于屏幕的位置,它可以将声音定位在立体声(5.1或7.1)中,具体取决于所选的音频设置.
类似AudioStreamPlayer2D,Area可以将声音转移到音频总线上.
与2D不同,AudioStreamPlayer的3D版本有一些更高级的选项:
混响总线
Godot允许进入特定Area节点的3D音频流将干音频和湿音频发送到不同的总线上.当你为不同类型的房间设置不同的混响配置时十分有用.这是通过在Area属性的 Reverb Bus 部分中启用此类混响来实现的:
同时,还创建了一个特殊的总线布局,每个区域都接收各自的混响信息. 最后需要在每条总线中创建并配置一个实际的混响效果,才能完成所需效果的设置:
Area的 Reverb Bus 部分还有一个名为 Uniformity (均匀性)的参数. 有些类型的房间比其他类型的房间反弹的声音更多(例如仓库),因此即使声源离得很远,也能在整个房间里听到几乎均匀的混响.调整此参数可以模拟这种效果.
多普勒
当发射源和接收者之间的相对速度发生变化时,发出声音的音高会随之升高/降低.Godot可以跟踪AudioStreamPlayer3D和Camera节点的速度变化.这两个节点都有这个属性,需要手动启用:
根据对象的移动方法选择启用设置:如果用 _process
来移动,选择 Idle ;如果使用 _physics_process
来移动,选择 Physics .追踪将自动进行.