Work in progress
The content of this page was not yet updated for Godot
4.4
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 節點發送至各個音訊匯流排(Bus)。AudioStreamPlayer 有多種類型,每一個都能載入一個 AudioStream 進行播放。
AudioStream
音訊流(AudioStream)是一個會發出聲音的抽象物件。聲音來源可以有很多種,最常見的是從檔案系統載入。音訊檔案可以作為 AudioStream 載入,並放到 AudioStreamPlayer 節點內播放。更多支援格式與差異可參考 匯入音訊樣本。
AudioStream 還有其他類型,例如 AudioStreamRandomizer。這類型每次播放時,會從多個音訊流中隨機選擇一個,並可隨機調整音高和音量。這對於讓經常重複播放的音效聽起來更有變化非常有幫助。
AudioStreamPlayer
這是標準的非定位型音訊流播放器,可將聲音輸出到任何匯流排。在 5.1 聲道配置中,也可以把音訊傳送到立體聲混音或前置喇叭。
播放類型(Playback Type)是一項實驗性設定,未來 Godot 版本可能會變動。設計這個設定主要是為了讓網頁匯出時使用基於 Web Audio API 的取樣器(Sample),而非將所有聲音直接串流到瀏覽器,這與多數其他平台不同。這能避免在單執行緒模式下網頁音訊播放出現雜音。預設情況下,只有網頁平台會使用取樣器。建議不要隨意更動這個設定,除非你有明確需求。你也可以在專案設定中的 Audio > General (需開啟進階設定)調整各平台的預設播放類型。
AudioStreamPlayer2D
這是 AudioStreamPlayer 的 2D 定位變體,能在 2D 空間中發出聲音。當音源靠近螢幕左側時,聲像會偏向左邊;靠近右側時則偏向右邊。
備註
Area2D 可以讓其內部的 AudioStreamPlayer2D 產生的聲音導向指定的匯流排,這讓你能針對遊戲世界特定區域設計不同的混響或音質效果。
AudioStreamPlayer3D
這是 AudioStreamPlayer 的 3D 定位變體,能在三維空間中播放聲音。根據音源與視點的位置關係,聲音會定位於立體聲、5.1 或 7.1 聲道,取決於你所選的音效配置。
類似於 AudioStreamPlayer2D,Area3D 也可以將 3D 聲音導向指定的音訊匯流排。
和 2D 不同,3D 版的 AudioStreamPlayer 有一些進階設定:
混響匯流排
警告
如果 AudioStreamPlayer 的播放模式設為預設的 Sample,則此功能在網頁平台上不支援。僅當播放模式設為 Stream 時才會運作,但若未啟用多執行緒,延遲可能會增加。
詳情請參見 網頁匯出說明文件中的音訊播放。
Godot 支援 3D 音訊流進入指定 Area3D 節點時,將原音(dry)和混響(wet)分別送到不同的匯流排。如果你有多種房間的混響設定,這功能會很實用。你可以在 Area3D 屬性的 Reverb Bus 區段啟用對應混響:
同時,Godot 會建立特殊的匯流排佈局,每個 Area3D 都能接收對應的混響資訊。你必須在每個混響匯流排上建立並設定一個混響效果,才能完成你想要的聲音表現:
Area3D 的 Reverb Bus 區段還有一個稱為 Uniformity (均勻度)的參數。有些房間(例如倉庫)比其他房間有更強的聲音反射,因此即使聲源較遠,在整個房間內也能聽到均勻的混響。調整這個參數可以模擬這種真實效果。
多普勒
警告
如果 AudioStreamPlayer 的播放模式設為預設的 Sample,則此功能在網頁平台上不支援。僅當播放模式設為 Stream 時才會運作,但若未啟用多執行緒,延遲可能會增加。
詳情請參見 網頁匯出說明文件中的音訊播放。
當發射源和接收者之間的相對速度發生變化時, 發出聲音的音高會隨之升高/降低.Godot可以追蹤AudioStreamPlayer3D和Camera節點的速度變化. 這兩個節點都有這個屬性, 需要手動啟用:
你可以根據物件的移動方式來啟用這個屬性:如果物件是用 _process 移動,請設為 Idle;如果是用 _physics_process 移動,請選擇 Physics。設定後會自動追蹤速度變化。