「ゲームにBGMを流したい」「触ったら『チーン』と鳴る仕掛けを作りたい」
ロブロックス(Roblox)スタジオで音楽と効果音を入れる方法を、実際の画像付きで誰でも簡単に分かるように解説します。ここでは、ずっと流れるBGM、触ると鳴るベル、自分にだけ聞こえる音、音楽のオン・オフボタンを作り、2人で聞こえ方を確かめるところまで進めます。
入門ステップ20/24 前の記事:ロブロックス(Roblox)スタジオで空を変える方法 全体の順番を見る
使うもの:Roblox Studioが起動するパソコン、スピーカーかイヤホン。パーツやスクリプトの入れ方はオビーの作り方、ボタンの作り方はボタンの作り方で画像付きで解説しています。
今回の完成状態:テストでBGMが流れ、黄色いベルに触れると音が鳴って、出力に「(アカウント名) がベルを鳴らしました」と出れば成功です。

音を入れる場所で、聞こえ方が変わる
ロブロックスの音は「Sound(サウンド)」という部品で鳴らします。Soundをどこに入れるかで、だれにどう聞こえるかが変わります。
| 入れる場所 | 聞こえ方 | 向いている音 |
|---|---|---|
| SoundService | どこにいても同じ大きさで聞こえる | BGM |
| パーツの中 | そのパーツから音が出て、近いほど大きく、遠いと聞こえない | ベル、滝、扉の音 |
| SoundServiceに入れてLocalScriptから鳴らす | 鳴らした本人にだけ聞こえる | 自分だけの合図、ボタンを押した音 |
1. ツールボックスで無料の音を探す
新しいBaseplateを開き、3D画面上部メニューの「ホーム」タブの「ツールボックス」(画像の1)を押すと、左にツールボックスが開きます。「カテゴリ」の中の「オーディオ」(画像の2)を押します。

オーディオの画面になりました(赤い枠)。ロブロックスや作り手が公開している音楽や効果音を、無料で使えます。

上の検索欄に英語で探したい音を入れてEnterキーを押します(画像の1)。ここでは落ち着いた音楽を探すために「calm」と入れました。結果の一覧(画像の2)には、名前と長さが並びます。

音の名前にマウスを乗せると、左に再生ボタンが出ます(赤い枠)。押すと試しに聞けます。

使いたい音が決まったら、名前を右クリックして「アセットIDをコピー」(赤い枠)を押します。音の番号(ID)がコピーされます。

音の名前を左クリックすると、選んだ場所にSoundがそのまま入ります。BGMにする場所を自分で決めたいときは、右クリックでIDだけをコピーするほうが確実です。
使った音は、BGMが「Calm Rain…」、ベルの音に「bell」で検索して出た「Store Door Bell」です。
| 使う音 | 検索した言葉 | コピーしたID |
|---|---|---|
| BGM | calm | 139805946507533 |
| ベルの音 | bell | 131845870598154 |
2. BGMを流す
BGMは「SoundService(サウンドサービス)」に入れます。SoundServiceは、ゲーム全体の音をまとめて置く場所です。エクスプローラの「SoundService」にマウスを乗せて、右に出る「+」(赤い枠)を押します。

検索欄に「Sound」と入れて、一覧の「Sound」(赤い枠)を押します。

入ったSoundの名前を、エクスプローラでF2キーを押して「BackgroundMusic」に変えます(赤い枠)。

BackgroundMusicを選んだ状態で、プロパティの検索欄に「SoundId」と入れ、SoundIdの欄に「rbxassetid://」のあとにコピーしたIDをつなげて入れます(画像の1)。上の表のBGMなら「rbxassetid://139805946507533」です。下の「Preview」の再生ボタン(画像の2)を押すと、編集画面のまま試しに聞けます。

続けてBackgroundMusicを選んだまま、プロパティを3つ変えます。まずプロパティの検索欄に「Looped」と入力し、「Looped(くり返し)」にチェックを入れます(赤い枠)。チェックがないと、曲が終わったところで止まってしまいます。

プロパティの検索欄に「Volume」と入力し、「Volume(音量)」を「0.25」にします(赤い枠)。初期値は0.5で、0(無音)から10まで決められます。BGMは効果音より小さめにしておくと、ほかの音が聞き取りやすくなります。

最後にプロパティの検索欄に「Playing」と入力し、「Playing(再生中)」にチェックを入れます(赤い枠)。Playingにチェックを入れても、編集中は鳴りません。テストを始めたときから流れ始めます。

| プロパティ | 今回の値 | 意味 |
|---|---|---|
| SoundId | rbxassetid://139805946507533 | 鳴らす音の番号 |
| Looped | オン | 終わったら最初から流す |
| Volume | 0.25 | 音の大きさ(0〜10、初期値0.5) |
| Playing | オン | テストを始めたら流す |
BGMは、スクリプトを書かなくても、このプロパティだけで流せます。
3. 触ると鳴るベルを作る
次は、触ったときに鳴る効果音です。エクスプローラの「Workspace」にマウスを乗せて「+」を押します。
検索欄に「Part」と入れ、一覧の「Part」を押します。
入ったPartの名前を、エクスプローラでF2キーを押して「Bell」に変えます(赤い枠)。

Bellを選んだ状態で、プロパティの検索欄に「Size」と入力し、Sizeの欄を「2, 4, 2」に書き換えてEnterキーを押します(赤い枠)。

プロパティの検索欄に「Position」と入力し、CFrameの下のPositionを「0, 2, -12」にします(赤い枠)。

続けてBellを選んだまま、プロパティの検索欄に「BrickColor」と入れ、BrickColorの右の欄を押して黄色の「New Yeller」を選びます(赤い枠)。

プロパティの検索欄に「Anchored」と入力し、Anchoredにチェックを入れて固定します(赤い枠)。

エクスプローラに「Bell」(画像の1)、3D画面に黄色い柱(画像の2)が出ます。

エクスプローラの「Bell」にマウスを乗せて「+」を押し、「Sound」(赤い枠)を入れます。ベルの音は、パーツの中に入れます。そうすると、ベルのある場所から音が出るようになります。

入ったSoundの名前を、エクスプローラでF2キーを押して「BellSound」に変えると、「Bell」の中に「BellSound」が入った形になります(赤い枠)。

エクスプローラでBellSoundを選んだ状態で、プロパティの検索欄に「SoundId」と入力し、SoundIdの欄にベルの音のID「rbxassetid://131845870598154」を入れてEnterキーを押します(赤い枠)。

プロパティの検索欄に「RollOffMaxDistance」と入れ、「40」にします(赤い枠)。単位はスタッドで、ベルから40スタッドより遠くでは聞こえなくなります。

ベルを鳴らすのはスクリプトです。エクスプローラのServerScriptServiceにマウスを乗せて「+」を押します(赤い枠)。

検索欄に「Script」と入れ、一覧の「Script」を押します(赤い枠)。

入ったScriptの名前を、エクスプローラでF2キーを押して「BellService」に変えます。
BellServiceを選んだ状態で、プロパティの検索欄に「RunContext」と入力し、RunContextの右の欄を押して一覧から「Server」を選びます(赤い枠)。RunContext(ランコンテキスト)は、スクリプトをサーバーとプレイヤーのパソコンのどちらで動かすかを決める設定です。

BellServiceをダブルクリックして開き、中身を全部消して、次のコードを貼り付けます。
-- ベルに触れたら効果音を鳴らすスクリプト(ServerScriptService に置く)
local Players = game:GetService("Players")
local bell = workspace:WaitForChild("Bell")
local bellSound = bell:WaitForChild("BellSound")
local COOLDOWN = 1 -- 次に鳴らせるまでの秒数
local ready = true
bell.Touched:Connect(function(hit)
-- 前の音から1秒たっていなければ何もしない(連続で鳴るのを防ぐ)
if not ready then
return
end
-- 触れたのがプレイヤーのキャラクターか確かめる
local player = Players:GetPlayerFromCharacter(hit.Parent)
if not player then
return
end
ready = false
bellSound:Play()
print(player.Name .. " がベルを鳴らしました")
task.wait(COOLDOWN)
ready = true
end)

| コードの部分 | していること |
|---|---|
| bell.Touched | ベルに何かが触れたら動く |
| GetPlayerFromCharacter | 触れたのがプレイヤーかどうかを調べる。プレイヤーでなければ鳴らさない |
| bellSound:Play() | ベルの音を鳴らす |
| ready と COOLDOWN | COOLDOWNで決めた1秒がたつまで、次の音を鳴らさない |
ベルにくっついたまま立っていると、Touchedは何度も動きます。テストでは、ベルに体を当てたままでいると、COOLDOWNで決めた1秒ごとに鳴りました。待ち時間を入れないと、音が重なってうるさくなります。
4. 自分にだけ聞こえる音を作る
次は、乗った本人にだけ聞こえる音です。エクスプローラの「Workspace」にマウスを乗せて「+」を押します。
検索欄に「Part」と入れ、一覧の「Part」を押します。
入ったPartの名前を、エクスプローラでF2キーを押して「ChimePad」に変えます(赤い枠)。

ChimePadを選んだ状態で、プロパティの検索欄に「Size」と入力し、Sizeの欄を「6, 1, 6」に書き換えてEnterキーを押します(赤い枠)。

プロパティの検索欄に「Position」と入力し、CFrameの下のPositionを「10, 0.5, -12」にします(赤い枠)。

続けてChimePadを選んだまま、プロパティの検索欄に「BrickColor」と入れ、BrickColorの右の欄を押して水色の「Pastel Blue」を選びます(赤い枠)。

プロパティの検索欄に「Anchored」と入力し、Anchoredにチェックを入れて固定します(赤い枠)。

次に、エクスプローラのSoundServiceにマウスを乗せて「+」を押します(赤い枠)。

検索欄に「Sound」と入れ、一覧の「Sound」を押します(赤い枠)。

入ったSoundの名前を、エクスプローラでF2キーを押して「Chime」に変えます(赤い枠)。

Chimeを選んだ状態で、プロパティの検索欄に「SoundId」と入力し、SoundIdに、ベルと同じ音のID「rbxassetid://131845870598154」を入れます(赤い枠)。

プロパティの検索欄に「PlaybackSpeed」と入力し、PlaybackSpeedを「1.5」にします(赤い枠)。1より大きくすると、ベルより少し高い音になります。

エクスプローラのSoundServiceに「Chime」(画像の1)、3D画面に水色の床(画像の2)ができます。

鳴らすのは、遊ぶ人それぞれのパソコンで動くLocalScriptです。エクスプローラのStarterPlayerの左の三角を押して開き、中のStarterPlayerScriptsにマウスを乗せて「+」を押します(赤い枠)。

検索欄に「LocalScript」と入れ、一覧の「LocalScript」を押します(赤い枠)。

入ったLocalScriptの名前を、エクスプローラでF2キーを押して「ChimeClient」に変えます。
ChimeClientをダブルクリックして開き、中身を全部消して、次のコードを貼り付けます。
-- 床に乗った本人にだけ音を鳴らすスクリプト(StarterPlayerScripts に置く)
local Players = game:GetService("Players")
local SoundService = game:GetService("SoundService")
local player = Players.LocalPlayer
local pad = workspace:WaitForChild("ChimePad")
local chime = SoundService:WaitForChild("Chime")
local ready = true
pad.Touched:Connect(function(hit)
if not ready then
return
end
-- 自分のキャラクターが触れたときだけ鳴らす
if hit.Parent ~= player.Character then
return
end
ready = false
SoundService:PlayLocalSound(chime) -- この画面の人にだけ聞こえる
print("自分にだけチャイムを鳴らしました")
task.wait(1)
ready = true
end)

「PlayLocalSound(プレイローカルサウンド)」は、呼んだ人のパソコンだけで音を鳴らす命令です。公式の説明でも、どこに入れたSoundでも、呼んだ人にしか聞こえないと書かれています。
5. 音楽のオン・オフボタンを付ける
BGMを止めたい人のために、画面にボタンを付けます。エクスプローラのStarterGuiにマウスを乗せて「+」を押します(赤い枠)。

検索欄に「ScreenGui」と入れ、一覧の「ScreenGui」を押します(赤い枠)。ScreenGui(スクリーンGUI)は、画面に文字やボタンを出すための入れ物です。

入ったScreenGuiの名前を、エクスプローラでF2キーを押して「MusicGui」に変えます(赤い枠)。

エクスプローラのMusicGuiにマウスを乗せて「+」を押します(赤い枠)。

検索欄に「TextButton」と入れ、一覧の「TextButton」を押します(赤い枠)。

入ったTextButtonの名前を、エクスプローラでF2キーを押して「MusicButton」に変えます(赤い枠)。

ボタンの置き方はボタンの作り方と同じです。エクスプローラでMusicButtonを選んだ状態で、プロパティの検索欄に「Size」と入力すると、似た名前の欄がいくつか並びます。名前がちょうどSizeの欄は、最初から「{0, 200},{0, 50}」になっています(赤い枠)。この大きさのまま使います。

続けてMusicButtonを選んだまま、プロパティの検索欄に「Position」と入力します。AbsolutePositionではなく、名前がちょうどPositionの欄を「{1, -220},{0, 70}」に書き換えてEnterキーを押すと、ボタンが画面の右上に移ります(赤い枠)。

プロパティの検索欄に「TextScaled」と入力し、TextScaledにチェックを入れます(赤い枠)。

エクスプローラのMusicButtonにマウスを乗せて「+」を押します(赤い枠)。

検索欄に「LocalScript」と入れ、一覧の「LocalScript」を押します(赤い枠)。

入ったLocalScriptの名前を、エクスプローラでF2キーを押して「MusicToggle」に変えます。
MusicToggleをダブルクリックして開き、中身を全部消して、次のコードを貼り付けます。
-- BGMのオン・オフを切り替えるボタン(TextButton の中に置く)
local SoundService = game:GetService("SoundService")
local button = script.Parent
local music = SoundService:WaitForChild("BackgroundMusic")
local function updateText()
if music.Playing then
button.Text = "音楽:オン"
else
button.Text = "音楽:オフ"
end
end
button.Activated:Connect(function()
-- Playing を false にすると止まり、true にすると止めた場所から続きを流す
music.Playing = not music.Playing
updateText()
end)
updateText()

6. テストで確かめる
3D画面の上の作品のタブ「Place1」を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。BGMが流れ始めます。右上には「音楽:オン」のボタンが出ています。
黄色いベルに歩いて触れると、ベルの音が鳴り、出力に「(アカウント名) がベルを鳴らしました」と出ます(赤い枠)。右の「サーバー」は、サーバーのScriptが鳴らしたという意味です。

水色の床に乗ると、少し高いチャイムが鳴り、出力に「自分にだけチャイムを鳴らしました」と出ます(赤い枠)。こちらは「クライアント」と出ていて、自分のパソコンのLocalScriptが鳴らしたことが分かります。

右上のボタンを押すと、「音楽:オフ」に変わってBGMが止まります(赤い枠)。もう一度押すと、止めた場所の続きから流れました。

Shift + F5キーでテストを停止します。
7. 2人で聞こえ方を確かめる
最後に、ほかの人にどう聞こえるかを確かめます。Studioの画面左上、青い再生ボタンの左にある「テスト」の右の「∨」を押し、一覧から「サーバーとクライアント」を選びます(赤い枠)。

人数の上向き三角を押して「2」にし(赤い枠)、左の青い再生ボタンを押します。Player1とPlayer2の窓が開きます。

下の画像の左がPlayer1、右がPlayer2の画面です。Player1が水色の床に乗ったとき、「自分にだけチャイムを鳴らしました」はPlayer1の出力にだけ出て(画像の1)、Player2の出力には何も出ませんでした(画像の2)。チャイムは乗った本人のパソコンだけで鳴っています。ベルのほうはサーバーのScriptが鳴らすので、近くにいる全員に聞こえます。

| 音 | 鳴らしたもの | 聞こえた人 |
|---|---|---|
| BGM | Playingのチェック | 全員 |
| ベル | サーバーのScript | 近くにいる全員 |
| チャイム | LocalScriptのPlayLocalSound | 乗った本人だけ |
確かめ終わったら、上の「終了」ボタン(赤い枠)でテストを止めます。

音が鳴らないときの直し方
| 症状 | 見るところ | 直し方 |
|---|---|---|
| Playingにチェックしたのに鳴らない | 編集中かどうか | 編集中は鳴らない。テストを始めると鳴る。試しに聞くならPreviewの再生ボタン |
| テストでも鳴らず、出力に赤い文字が出る | 出力 | その音を使う許可がない。ツールボックスでほかの音を選ぶ |
| SoundIdを入れたのに鳴らない | SoundId | 「rbxassetid://」のあとが数字だけか、空白が入っていないか |
| 音が小さい・聞こえない | Volume | 0なら無音。0.5くらいから試す |
| 少し離れると聞こえない | Soundを入れた場所、RollOffMaxDistance | 全体に流すならSoundServiceへ。距離を広げるならRollOffMaxDistanceを大きくする |
| BGMが1回で止まる | Looped | チェックを入れる |
| 触ると何度も鳴って音が重なる | スクリプト | 待ち時間(readyとCOOLDOWN)を入れる |
| ツールボックスで音を押したらSoundが入った | エクスプローラ | 左クリックするとそのまま入る。IDだけほしいときは右クリックで「アセットIDをコピー」 |
自分で作った音を使うときは
ツールボックスにない音は、自分でアップロードして使えます。公式の案内にある主な条件は次のとおりです。
| 条件 | 内容 |
|---|---|
| 権利 | その音を使う権利を持っている |
| ルール | コミュニティルールと利用規約を守っている |
| ファイル | mp3・ogg・wav・flacのどれかで、曲が1つだけ入っている |
| 大きさと長さ | 20MB未満で、長さが7分未満 |
| 音の質 | サンプルレートが48kHz以下で、チャンネルはモノラルかステレオなど決められた形 |
| 数 | 30日で100個まで(本人確認をすると2,000個まで) |
アップロードした音には審査があります。審査が終わっても、はじめは自分しか使えない非公開の音です。フレンドやほかの作品で使えるようにするには、使う許可を別に出します。市販の曲やテレビの音など、自分に権利のない音はアップロードできません。
よくある質問
音楽を止めると、次は最初から流れる?
Playingをオフにして止めた場合は、オンに戻すと止めた場所の続きから流れます。この記事のテストでも、97秒あたりで止めて、押し直すと続きから流れました。流れている秒数は、テスト中にエクスプローラのSoundServiceの「BackgroundMusic」を選び、プロパティの検索欄に「TimePosition」と入れると見られます。最初から流したいときは、スクリプトで Play() を呼びます。
新しい「AudioPlayer」とは何が違う?
公式の案内では、Soundの代わりに、新しいAudioPlayerなどの部品を使うことを勧めています。AudioPlayerは音の通り道を細かく決められますが、鳴らすまでにAudioDeviceOutputやWireなど複数の部品が必要です。BGMや効果音を入れるだけなら、この記事のSoundで十分に動きます。
BGMと効果音の音量を、まとめて変えたい
SoundServiceに「SoundGroup」を入れると、いくつかのSoundの音量をまとめて変えられます。SoundのプロパティのSoundGroupの欄を押してから、エクスプローラでグループを押すと、そのグループに入ります(グループの中に置くのではありません)。音量はかけ算になり、Soundが0.5、グループも0.5なら、0.25の大きさで鳴ります。なお公式の説明では、Soundのほかに、より細かく音を扱える新しいAudio系の部品も紹介されています。
次は、乗ると別の場所へ移動するテレポートを作ります。次のステップ(入門 21/24)
次に知りたいことを選ぶ
- 次のステップ:乗ると別の場所へ移動するテレポートを作ります → ロブロックス(Roblox)でテレポートを作る方法
- ボタンの見た目や置き方を知りたい → ロブロックス(Roblox)スタジオでボタンを作る方法
- コインを拾ったときに音を鳴らしたい → ロブロックス(Roblox)でコイン集めゲームを作る方法
- ツールボックスの素材を安全に使いたい → ロブロックス(Roblox)スタジオのツールボックスは安全?