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 . 追蹤將自動進行.