オーディオ再生は、体験内で音を発する Sound オブジェクトを介して行われます。Roblox は各 オーディオアセット にユニークな ID を割り当てることができ、この ID を Sound オブジェクトに割り当てて特定の効果音や音楽トラックを再生します。このオーディオをランタイム中に自動再生するように設定するか、スクリプトから 再生をトリガー することができます。
複数の Sound オブジェクトの再生を変更するには、それらを サウンドグループ に割り当てて、グループ全体のボリュームを制御したり、ダイナミックエフェクト を適用できます。
サウンドオブジェクトの作成
Sound オブジェクトを作成できる場所は三つあり、それぞれの場所はユーザーの体験内での位置に応じた音の発生方法とボリュームの変化を決定します。
| 場所 | 音の発生方法 | ボリュームの変化方法 |
|---|---|---|
| ブロック、球、または円柱 BasePart の子。 | 音が部品全体の表面から外向きに発生します。 | ボリュームは、ユーザーのサウンドリスナーと部品の位置との距離、およびそのサイズに応じて変化します。 |
| Attachment、MeshPart、TrussPart、WedgePart、または CornerWedgePart の子。 | 音が単一のアタッチメントポイントまたは部品中心から外向きに発生します。 | ボリュームは、ユーザーのサウンドリスナーとアタッチメントまたは部品の位置との距離に応じて変化します。 |
| SoundService または Workspace 内。 | 音が体験全体に発生します。 | ボリュームとパン位置は、ユーザーのサウンドリスナーの位置や回転に関係なく同じままです。 |
ポジショナルオーディオ
ポジショナルオーディオは、ユーザーが体験内の特定の位置の近くでのみ聞くことができるオーディオです。利用できるポジショナルオーディオの種類には、ボリューメトリックとポイントソースの2つがあります。
ボリューメトリック
ボリューメトリックオーディオは、ユーザーの音源に対する位置に応じて動的に変化するため、最もリアルな音声オプションです。たとえば、ユーザーが子を持つ BasePart 内にいる場合、音はユーザーの周囲で再生され、スピーカーのボリュームが同じ音楽をヘッドフォンで再生しているようになります。ユーザーが部品から出ると、音は徐々にボリュームが減少し、スピーカーごとにより方向性が強くなり、ユーザーのリスナーが回転する際には頭の周りで移動します。音が部品からの異なる距離でどのように大きく聞こえるかを制御するプロパティについての情報は、RollOffMinDistance と RollOffMaxDistance を参照してください。
BasePart のサイズも音のボリュームに影響を及ぼします。大きな BaseParts は、ユーザーがオーディオを聞くことができるより広い領域を生成し、ユーザーが大きな BasePart から離れると、ボリュームが遅く減少します。以下の例では、都市のサイズの BasePart があり、その中に環境音を再生する Sound オブジェクトがあります。ユーザー A と B は異なる音を体験します:ユーザー B は大きな BasePart に近く、ほぼ同じボリュームで音を聞きます。対照的に、ユーザー A は都市から遠く離れているため、聞こえる音はユーザー B よりも静かで、各スピーカーで異なる音量で再生されます。

ボリューメトリックオーディオは、ユーザーの周囲で没入感が必要なオーディオに特に役立ちます。たとえば、コンサートステージや雨音といった環境ゾーンなどです。さまざまなサイズや位置の BaseParts 上に Sound オブジェクトを配置して試すと、ボリューメトリックオーディオの没入感を実感することができます。
ボリューメトリックオーディオ用の Sound オブジェクトを作成するには:
Explorer ウィンドウで、SoundService を選択します。
Properties ウィンドウで、VolumetricAudio プロパティに移動し、Enabled に設定します。
Explorer ウィンドウで、BasePart にカーソルを合わせて、⊕ ボタンをクリックします。コンテキストメニューが表示されます。
メニューから Sound を挿入します。
Properties ウィンドウで、SoundId プロパティに移動し、有効な オーディオアセットID を入力します。

(オプション) 体験が始まったときにオーディオを再生したい場合は、Playing プロパティを有効にします。
ポイントソース
ボリューメトリックオーディオとは対照的に、ポイントソースオーディオは単一のポイントソースからのみ音を発生させます。この種のオーディオは、爆発音、衝撃音、電子機器の音、対話に役立ちます。
ポイントソースオーディオ用の Sound オブジェクトを作成するには:
- Explorer ウィンドウで、アタッチメント、トラス、ウェッジ、またはコーナーウェッジにカーソルを合わせて、⊕ ボタンをクリックします。コンテキストメニューが表示されます。
- メニューから Sound を挿入します。
- (オプション) 体験が始まったときにオーディオを再生したい場合は、Playing プロパティを有効にします。
バックグラウンドオーディオ
バックグラウンドオーディオは、ユーザーが体験内でどこに移動しても同じボリュームで再生されます。この種のオーディオは、ユーザーに再生したい音楽や、特に複数のオーディオファイルのサウンドトラックを作成する場合に役立ちます。
すべての Sound オブジェクトは、体験内のオーディオを追加および編集する際に管理目的で Workspace の単一の場所に保持することをお勧めします。以下の例では、新しい Sound オブジェクトが SoundService コンテナ内に格納されており、このサービスが体験内で Sound オブジェクトを再生する方法を決定します。
バックグラウンドオーディオ用の Sound オブジェクトを作成するには:
- Explorer ウィンドウで、SoundService にカーソルを合わせて、⊕ ボタンをクリックします。コンテキストメニューが表示されます。
- メニューから Sound を挿入します。
- (オプション) 体験が始まったときにオーディオを再生したい場合は、Playing プロパティを有効にします。
サウンドオブジェクトのカスタマイズ
Sound オブジェクトのプロパティは、ユーザーがオーディオをどのように体験するかに影響を与えるために共同で機能します。例えば:
- 特定のオーディオを個別にどのくらい大きく聞こえるか、互いに対してどのように聞こえるか(Volume)。
- ユーザーが聞くことができるオーディオの部分(TimePosition)。
- どのくらいの速度でどのピッチで聞こえるか(PlaybackSpeed)。
- オーディオが完了した後に自動的に再生されるかどうか(Looped)。
ボリューム
Volume プロパティを使用すると、オーディオのボリュームを 0(無音)から 10(轟音)までの任意の範囲に設定できます。複数の Sound オブジェクトのボリュームを一度に変更したい場合は、それらを サウンドグループ に親子関係で配置します。
RollOffMinDistance と RollOffMaxDistance
RollOffMinDistance と RollOffMaxDistance は、ユーザーがポジショナルオーディオからボリュームをどのように知覚するかの範囲を決定します。ボリューメトリックオーディオの場合、RollOffMinDistance は、クライアントのリスナーが親 BasePart から 離れる ときにオーディオのボリュームが減少し始める最小距離をスタッド単位で表し、RollOffMaxDistance プロパティはクライアントのリスナーがオブジェクトの表面からオーディオを聞くことのできる最大距離をスタッド単位で表します。

ポイントソースオーディオの場合、RollOffMinDistance と RollOffMaxDistance はボリューメトリックオーディオと同様に機能しますが、これらのプロパティが制御するロールオフ距離はオブジェクトを囲むのではなく、ポイントソースから外側へ影響を及ぼします。

RollOffMode
RollOffMode プロパティを使用して、ユーザーのリスナーと Sound オブジェクトの親との距離が増えるにつれてオーディオがどのようにフェードするかを決定できます。このプロパティは、Enum.RollOffMode 列挙型の4つの値のいずれかに設定できます。

| RollOffMode | 説明 |
|---|---|
| Inverse(デフォルト) | ボリュームは最初に RollOffMinDistance から急激に減少しますが、ボリューム減少はユーザーが RollOffMaxDistance に到達するにつれて徐々に進行します。一度到達すると、オーディオは静かになります。 |
| Linear | ボリュームは RollOffMinDistance と RollOffMaxDistance の間で線形に減少します。ユーザーが RollOffMaxDistance に到達すると、オーディオは静かになります。 |
| InverseTapered | ボリュームは RollOffMinDistance に近い時に逆モデルに従い、ユーザーが RollOffMaxDistance に近づくと、線形平方モデルに従います。オーディオは最大距離点で静かになります。 |
| LinearSquare | ボリュームは RollOffMinDistance と RollOffMaxDistance の間で線形平方関係を持って減少します。オーディオは最大距離点で静かになります。 |
PlaybackSpeed
PlaybackSpeed プロパティにより、オーディオの再生速度を決定できます。たとえば、PlaybackSpeed を 2 に設定すると、オーディオの再生速度は二倍になり、ピッチは一オクターブ高くなります。同様に、これを 0.5 に設定すると、オーディオの再生速度は半分になり、ピッチは一オクターブ低くなります。
| PlaybackSpeed = 0.5 | PlaybackSpeed = 1.0 | PlaybackSpeed = 2.0 |
TimePosition
TimePosition プロパティは、ユーザーが現在再生中のオーディオサンプルの位置を秒単位で表示します。このプロパティは、オーディオサンプルのセクションのみを再生する場合や、オーディオが特定の位置に達したときにイベントをトリガーする場合に役立ちます。たとえば、以下のコードサンプルは、オーディオトラックの限られた時間範囲でパーティクル発生器が白いリングパーティクルを部品の上に放出することを引き起こします。
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
-- 新しい部品を作成
local part = Instance.new("Part")
part.Anchored = true
part.Color = Color3.new(0.75, 0.2, 0.5)
part.Size = Vector3.new(2, 1, 2)
part.Material = Enum.Material.Neon
part.Position = Vector3.new(0, 4, 0)
part.Parent = Workspace
-- 部品にアタッチメントを作成
local attachment = Instance.new("Attachment")
attachment.Position = Vector3.new(0, 0.5, 0)
attachment.Parent = part
-- アタッチメントにパーティクル発生器を作成
local emitter = Instance.new("ParticleEmitter")
emitter.Rate = 5
emitter.Lifetime = NumberRange.new(1.5, 1.5)
emitter.Texture = "rbxassetid://1266170131"
emitter.Speed = NumberRange.new(1, 1)
emitter.Size = NumberSequence.new{NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(1, 6)}
emitter.Transparency = NumberSequence.new{NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(0.25, 0), NumberSequenceKeypoint.new(1, 1)}
emitter.Orientation = Enum.ParticleOrientation.VelocityPerpendicular
emitter.Parent = attachment
-- アタッチメントにサウンドを作成
local sound = Instance.new("Sound")
sound.SoundId = "rbxassetid://1835405646"
sound.Parent = attachment
-- サウンドを再生
sound:Play()
-- エミッターを有効にするかチェックを開始
RunService.Heartbeat:Connect(function()
-- 音声の時間範囲内でエミッターを有効にする。そうでない場合は無効にする
emitter.Enabled = sound.TimePosition >= 5 and sound.TimePosition < 20
end)
Looped
Looped プロパティを使用すると、オーディオが再生終了後に繰り返すことができます。true に設定すると、Sound オブジェクトのオーディオが再度再生されます。これは、バックグラウンドオーディオ に適用すると、体験に突然の静けさが訪れないようにする上で役立ちます。
スクリプトサウンドオブジェクト
コンテキストに応じたオーディオの再生
Sound オブジェクトの Playing プロパティを通じてオートプレイするオーディオの他に、LocalScript からオーディオをコンテキストに応じて再生することもできます。対応する Sound オブジェクトに対して Play() を呼び出します。例えば:
local Workspace = game:GetService("Workspace")local sound = Instance.new("Sound")sound.SoundId = "rbxassetid://9120386436"sound.Looped = truesound.Parent = Workspacesound:Play()
または、プレイスに複数のトラックがある場合、LocalScript から特定のトラックを再生できます。
local SoundService = game:GetService("SoundService")local musicTrack = SoundService:FindFirstChild("LucidDream")if musicTrack not musicTrack.IsPlaying thenmusicTrack:Play()end
インターフェースオーディオの再生
ユーザーが ボタン のような GuiObjects をアクティブにするときに、Sound オブジェクトを Activated イベントリスナに接続することで、インターフェースオーディオを再生できます。これにより、ユーザーがボタンにマウスをオーバーしたり押したときに聴覚的フィードバックを提供できます。
ユーザーが TextButton または ImageButton を有効にする際に Sound オブジェクトのオーディオを再生するには:
local SoundService = game:GetService("SoundService")
local button = script.Parent
local sound = SoundService:FindFirstChild("SOUND_NAME")
if not sound.isLoaded then
sound.Loaded:Wait()
end
local function onButtonActivated()
if sound and not sound.IsPlaying then
sound:Play()
end
end
button.Activated:Connect(onButtonActivated)