Work in progress

The content of this page was not yet updated for Godot 4.2 and may be outdated. If you know how to improve this page or you can confirm that it's up to date, feel free to open a pull request.

音频流

前言

正如你可能已经在 音频总线 中读到的一样, 声音通过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 . 追踪将自动进行.