バックグラウンド音楽に加えて、ゲーム内オーディオはプレイヤーのエクスペリエンスを向上させることができます。このチュートリアルでは、2つの形態のゲーム内サウンドについて説明します: 位置サウンドと フィードバックサウンド。
最初の例では、滝の位置のサウンドを作成します。 2つ目の例では、プレイヤーがコレクタブルに触れたときにジングルを再生するスクリプトを使用します。
位置音
サウンドオブジェクトがパーツまたはアタッチメントに親化されると、その位置が移動します。オーディオは、その場所から放送され、プレイヤーが近づくにつれて、 サウンド の位置が大きくなります。この瀑布の場合など、プレイヤーが近づくほど、音量が大きくなります。
サウンドを作成
任意の部分で、サウンド オブジェクトを作成し、WaterfallSound という名前の新しい サウンドオブジェクト を作成します。
プロパティで、 サウンドID を見つけ、このウォーターフォールの雰囲気に変更します: rbxassetid://6564308795。
ゲームが開始すると、プレイ と ループ を切り替えて、オンになります。
ゲームをテストして、滝の雰囲気を聞くことを確認します。
サウンドの距離を調整
テスト時に注意してください、オブジェクトからプレイヤーが遠く離れていても、オーディオはすぐに再生されます。ロールオフプロパティを使用すると、プレイヤーがサウンドを聞く距離を変更して、フェイドインエフェクトを作成できます。
Class.Sound.RollOffMaxDistance|RollOffMaxDistance を 30 に変更します。このプロパティはスタッドで測定されます。
For a smoother fade, change the ロールオフモード to 逆向きタップ . This makes approaching the sound feel less sudden.
プロジェクトを実行します。オブジェクトの近くのみでサウンドが聞こえることに注意してください。
ロールオフを微調整する
要件に応じて、特殊効果や高度なリアルモデルの増強のために異なるプロパティを調整してください。次のプロパティを参照してください:
- RollOffMinDistance - サウンドの最小距離 (in studs) で音量が減少します。
- SoundGroup - グループ間の音量を調整し、バランスを取り戻すために使用されます。グラウンドミュージックやゲーム内エフェクトなど。
フィードバックサウンド
スクリプトを使用してコマンドでサウンドをプレイすることができます。サウンドをイベントにリンクできます。たとえば、プレイヤーがパーツに触れたり、メニューにインタラクトしたりすると、スクリプトを作成し、コレクタブルオブジェクトに鳴らす音を再生します。
コレクタブルを設定する
このチュートリアルの残り部分では、プレイヤーが宝石を集めるためのパーツとスクリプトが含まれています。このモデルには、部品とスクリプトが含まれています。
- ブラウザで コレクタブル ジェム モデル ページを開き、 取得する ボタンをクリックします。
- In Studio, ビュー タブに移動し、ツールボックス をクリックします。
- ツールボックスウィンドウで インベントリ ボタンをクリックします。そして、ドロップダウンが マイモデル にあることを確認してください。
- Select the ジェムを集めるモデルを選択してゲームに追加する model to add it into the game.
In サウンドサービス 、新しい サウンド を作成し、 フィードバックサウンド という名前です。
In FeedbackSound, set the SoundId to rbxassetid://4110925712 - the SoundId of the simple chime downloaded from the model page.
スクリプトのセットアップ
In 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
サウンドを再生する
Create a variable for SoundService , then another variable to store the フィードバックサウンド .
local pickupObjects = workspace.Collectables.Objectslocal objectsArray = pickupObjects:GetChildren()local SoundService = game:GetService("SoundService")local feedbackSound = SoundService:FindFirstChild("FeedbackSound")local function partTouched(otherPart, objectPart)サイレを再生するには、関数 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ゲームをテストして、プレイヤーがコレクタブルに触れると、両方が消えてサウンドが再生されることを確認してください。