音频流

前言

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

AudioStream

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

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

AudioStreamPlayer

../../_images/audio_stream_player.png

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

AudioStreamPlayer2D

../../_images/audio_stream_2d.png

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

备注

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

../../_images/audio_stream_2d_area.png

AudioStreamPlayer3D

../../_images/audio_stream_3d.png

这是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 . 追踪将自动进行.