音频流

简介

正如你可能已经在 :ref:`doc_audio_buses`中读到的一样,声音通过AudioStreamPlayer节点发送到每个总线.AudioStreamPlayer有很多种.每一个都会加载一个AudioStream并进行播放.

AudioStream

音频流(audio stream)是一种发出声音的抽象对象. 声音可以来自许多地方,最常见的是从文件系统加载.音频文件可以作为AudioStreams加载并放置在AudioStreamPlayer中.你可以在 导入音频采样 中找到有关支持的格式和格式差异的信息.

AudioStream有不同的类型,例如AudioStreamRandomPitch,它在每次播放声音时随机调整音高(对于某些音效非常有用),可以为频繁播放的声音增加一些变化.

AudioStreamPlayer

这是一个标准的,非位置型的流播放器,可以播放到任意总线. 在5.1立体声中,它可以将音频发送到立体声混音或前置扬声器.

AudioStreamPlayer2D

这是AudioStreamPlayer的一种变体,它将声音发散到2D位置环境中. 当靠近屏幕左侧时,声像将向左偏移. 靠近右侧时,则向右偏移.

注解

Area2D可以将它们包含的AudioStreamPlayer2D的声音转移到特定的总线上.这样就可以创造具有不同混响或声音质量的总线,从而处理在游戏世界的特定区域中发生的动作.

../../_images/audio_stream_2d_area.png

AudioStreamPlayer3D

这是AudioStreamPlayer的一种变体,它将声音发散到3D位置环境中.根据播放器相对于屏幕的位置,它可以将声音定位在立体声(5.1或7.1)中,具体取决于所选的音频设置.

类似AudioStreamPlayer2D,Area可以将声音转移到音频总线上.

../../_images/audio_stream_3d_area.png

与2D不同,AudioStreamPlayer的3D版本有一些更高级的选项:

混响总线

Godot允许进入特定Area节点的3D音频流将干音频和湿音频发送到不同的总线上.当你为不同类型的房间设置不同的混响配置时十分有用.这是通过在Area属性的 Reverb Bus 部分中启用此类混响来实现的:

../../_images/audio_stream_reverb_bus.png

同时,还创建了一个特殊的总线布局,每个区域都接收各自的混响信息. 最后需要在每条总线中创建并配置一个实际的混响效果,才能完成所需效果的设置:

../../_images/audio_stream_reverb_bus2.png

Area的 Reverb Bus 部分还有一个名为 Uniformity (均匀性)的参数. 有些类型的房间比其他类型的房间反弹的声音更多(例如仓库),因此即使声源离得很远,也能在整个房间里听到几乎均匀的混响.调整此参数可以模拟这种效果.

多普勒

当发射源和接收者之间的相对速度发生变化时,发出声音的音高会随之升高/降低.Godot可以跟踪AudioStreamPlayer3D和Camera节点的速度变化.这两个节点都有这个属性,需要手动启用:

../../_images/audio_stream_doppler.png

根据对象的移动方法选择启用设置:如果用 _process 来移动,选择 Idle ;如果使用 _physics_process 来移动,选择 Physics .追踪将自动进行.