オーディオの再生は、ゲーム内で音を発する Sound オブジェクトを通じて行われます。Robloxは、各 オーディオアセット に一意のIDを割り当て、このIDを Sound オブジェクトに割り当てて特定の効果音や音楽トラックを再生できます。このオーディオをランタイムで自動的に再生するように設定するか、スクリプトから 再生する ようにトリガーできます。
複数の Sound オブジェクトの再生を変更するには、それらを サウンドグループ に割り当て、グループ全体の音量を制御したり、ダイナミックエフェクト を適用したりできます。
サウンドオブジェクトの作成
Sound オブジェクトを作成できる場所は3つあり、それぞれの場所によってオーディオの発生方法や音量の変化がユーザーのゲーム内での位置に関連して決まります。
| 場所 | オーディオの発生方法 | 音量の変化方法 |
|---|---|---|
| ブロック、球体、または円柱の BasePart の子。 | オーディオはパートの全表面から外向きに発生します。 | 音量は、ユーザーのサウンドリスナーとパートの位置との距離、およびそのサイズによって変化します。 |
| Attachment、MeshPart、TrussPart、WedgePart、または CornerWedgePart の子。 | オーディオは単一のアタッチメントポイントまたはパートの中心から外向きに発生します。 | 音量は、ユーザーのサウンドリスナーとアタッチメント/パートの位置との距離によって変化します。 |
| SoundService または Workspace 内。 | オーディオはゲーム全体に発生します。 | 音量とパン位置は、ユーザーのサウンドリスナーの位置や回転に関係なく同じままです。 |
ポジショナルオーディオ
ポジショナルオーディオは、ユーザーがゲーム内の特定の位置の近くでのみ聞こえるオーディオです。利用できるポジショナルオーディオには、ボリュメトリックとポイントソースの2種類があります。
ボリュメトリック
ボリュメトリックオーディオは、ユーザーのオーディオソースへの位置に応じて動的に変化する最もリアルなオーディオオプションです。たとえば、ユーザーが子の Sound オブジェクトを持つ 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 オブジェクトのプロパティは、ユーザーがオーディオを体験する方法に影響を与えるために連携して機能します。たとえば:
- 特定のオーディオを個別に、または相互にどれだけ大きく聞こえるか(音量)。
- オーディオのどの部分を聞くことができるか(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 に近づくにつれて音量のフェードがより緩やかになります。RollOffMaxDistance に達すると、オーディオは静かになります。 |
| Linear | 音量は RollOffMinDistance と RollOffMaxDistance の間で線形にフェードします。ユーザーが RollOffMaxDistance に達すると、オーディオは静かになります。 |
| InverseTapered | 音量は RollOffMinDistance に近いときに逆モデルに従い、ユーザーが RollOffMaxDistance に近いときに線形平方モデルに従います。オーディオは最大距離点で静かになります。 |
| LinearSquare | 音量は RollOffMinDistance と RollOffMaxDistance の間で線形平方関係でフェードします。オーディオは最大距離点で静かになります。 |
PlaybackSpeed
PlaybackSpeed プロパティを使用すると、オーディオの再生速度を決定できます。たとえば、PlaybackSpeed を 2 に設定すると、オーディオは2倍の速さで再生され、1オクターブ高いピッチになります。同様に、0.5 に設定すると、オーディオは2倍の遅さで再生され、1オクターブ低いピッチになります。
| 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 = true
sound.Parent = Workspace
sound:Play()または、プレイスに複数のトラックがある場合、クライアントスクリプトから特定のトラックを再生できます:
local SoundService = game:GetService("SoundService")
local musicTrack = SoundService:FindFirstChild("LucidDream")
if musicTrack and not musicTrack.IsPlaying then
musicTrack: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)