遊戲中的音頻可以強化玩家的體驗。這個教學將探討兩種遊戲內音效: 位置 和 回饋 音效。
為了第一個範例,你會為瀑布創建一個位置音效。 在第二個範例中,一個指令碼將被使用來播放玩家觸摸收藏品時播放的 Jingle。
位置音效
當 聲音 對象與零件或附件相關時,它會變成位置。音頻會從其位置發出,隨著玩家靠近,就會增加音量,這是在這個瀑布的情況下的情況。
製作聲音
在任何想要的位置創建新 聲音 對象,名為 WaterfallSound 。
在屬性中,找到 SoundId 並將其變更為此水fall 環境:rbxassetid://6564308795。
開始遊戲時,切換 播放 和 循環 以成為 開啟。
測試遊戲,確認你聽到瀑布的環境聲。
調整音效距離
測試時注意,音頻立即播放,即使玩家距離物件標很遠。 使用滾動關閉屬性,您可以修改玩家聽到聲音的距離,以創建漸漸消失的效果。
將 RollOffMaxDistance 變更為 30 。此屬性以英哩計量。
要獲得更平滑的漸漸消失,請將 RollOffMode 變更為 InverseTapered 。這樣會使聲音的接近感覺更少。
執行項目。注意音只會在對物件附近聽到。
精細調整滾動關閉
根據您的需求,您可能會想調整不同屬性以獲得特殊效果或增強現實。請參閱以下屬性:
- RollOffMinDistance - 最小距離 (以 stud 計) 一個音效的音量會減少。
- SoundGroup - 用於調整和平衡音效群之間的音量,例如背景音樂和遊戲內效果。
意見聲音
您可以使用指令使用指令使用音效播放。 您可以將音效鏈接到事件,例如玩家觸摸零件或與菜單互動。 這裡,您將創建一個指令使用音效播放的指令。
設置收藏品
這個教學的剩下部分使用預製模型。這個模型包括零件和指令碼,以便玩家能夠收集寶石。
- 在瀏覽器中,開啟 收集可能寶石模型 頁面,然後按一下 取得 按鈕。
- 在 Studio 中,前往檢視標籤,然後按一下工具箱。
- 在工具箱窗口中,單擊 物品欄 按鈕。然後確認是否在 我的模型 下拉欄表中。
- 選擇 可收集寶石 模型,將其添加到遊戲中。
在 SoundService 中,創建一個名為 FeedbackSound 的新 Sound 。
在 FeedbackSound 中,將 SoundId 設置為 rbxassetid://4110925712 - 模型頁面從簡單的鈴聲下載的音鈴ID。
設置指令碼
在 StarterPlayer > StarterPlayerScripts 中,創建名為 CollectableSounds 的新本地指令碼。
下面的代碼將會在玩家碰到可收集的時候執行 partTouched 函數。複製代碼到您的脚指令碼。
local pickupObjects = workspace.Collectables.Objectslocal objectsArray = pickupObjects:GetChildren()local function partTouched(otherPart, objectPart)local whichCharacter = otherPart.Parentlocal humanoid = whichCharacter:FindFirstChildWhichIsA("Humanoid")if humanoid and objectPart.CanCollide == true thenendend-- 將每個物件零件綁定到觸摸功能,以便在所有零件上運行for objectIndex = 1, #objectsArray dolocal objectPart = objectsArray[objectIndex]objectPart.Touched:Connect(function(otherPart)partTouched(otherPart, objectPart)end)end
播放聲音
為 SoundService 建立變數,然後再建立一個變數來儲存 回饋音效 。
local pickupObjects = workspace.Collectables.Objectslocal objectsArray = pickupObjects:GetChildren()local SoundService = game:GetService("SoundService")local feedbackSound = SoundService:FindFirstChild("FeedbackSound")local function partTouched(otherPart, objectPart)要播放鐘,請找到 function partTouched 。在 if 句中,调用 feedbackSound:Play() 播放音效。
local function partTouched(otherPart, objectPart)local whichCharacter = otherPart.Parentlocal humanoid = whichCharacter:FindFirstChildWhichIsA("Humanoid")-- 播放聲音,一旦完成,就毀滅對物件if humanoid and objectPart.CanCollide == true thenfeedbackSound:Play()endend測試遊戲,確認玩家觸摸到可收集物品時,它不僅消失,而且也會發出聲音。