ボイスチャット

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

ボイスチャットは、あなたと他のプレイヤーとの間でリアルタイムの音声コミュニケーションを可能にする機能です。この機能は、最大100人のプレイヤーをサポートする場所でのみ利用可能です。

ゲーム内でボイスチャットをしている2人のユーザー。

ボイスチャットを有効にする

ボイスチャットは、最大100人のプレイヤーを持つすべての新しいゲームに対して、確認済みの13歳以上のユーザーにデフォルトで有効になっています。ボイスチャットを有効にすることは、音声からテキストへのAPIを使用するために必要です。

既存のゲームでボイスを有効にするか、新しいゲームで無効にするには:

  1. スタジオでゲームを開きます。
  2. ファイルエクスペリエンス設定を開きます。
  3. ウィンドウの左側にあるコミュニケーションタブに移動します。
  4. ボイスチャットを有効にするを希望の設定に切り替えます。
  5. オプション
    ゲーム内のプレイヤー間のコミュニケーションを向上させるために、カメラを有効にするをオンにして、対象となるプレイヤーが動きに合わせてアバターをアニメーションさせることを許可します。
  6. 変更を保存するために場所を公開します。

最大プレイヤー数を設定する

以前に場所の最大プレイヤー数を100人以上に設定していた場合、ボイスチャットをサポートするためにそれを100以下に減らす必要があります。

  1. クリエイターダッシュボードでゲームを選択し、設定場所に移動します。
  2. 希望の場所を選択し、左側の列でアクセスに移動します。
  3. 最大訪問者数に100以下の数を入力します。
  4. 変更を保存ボタンをクリックします。

場所の最大プレイヤー数を100未満に更新すると、すでに異なる高い数に設定されているサーバーが存在する可能性があります。これらのサーバーはボイスチャットをサポートしないため、サーバーを再起動することをお勧めします。

ボイスの動作をカスタマイズする

ボイスチャットはデフォルトで近接ベースであり、参加者の音量は互いの距離に基づいて調整されます。ただし、UseAudioApiEnabledに設定することで、ゲーム内での音声の設定と使用を制御できます。

VoiceChatServiceがすでに表示されていない場合:

  1. エクスプローラーウィンドウで右クリックし、コンテキストメニューから**サービスを表示…**を選択します。

  2. ポップアップウィンドウでVoiceChatServiceを選択し、挿入をクリックします。サービスがエクスプローラーの階層に表示されます。

    エクスプローラー階層内のVoiceChatService
  3. VoiceChatServiceが選択されている状態で、プロパティウィンドウでUseAudioApiEnabledに設定されていることを確認します。これはすでに設定されている場合があります。

チームベース

チームメンバーのみが互いに聞こえるTeamベースのチャットを実装するには、ServerScriptService内に以下のScriptを使用できます:

チームチャット
local Teams = game:GetService("Teams")
local function findAudioInput(forPlayer : Player) : AudioDeviceInput?
-- プレイヤーごとに1つのAudioDeviceInputが存在することを前提としています
-- VoiceChatService.EnableDefaultVoiceがtrueの場合、これが提供されます
-- AudioDeviceInputオブジェクトが他の場所に配置されている場合は、一般性のために再構築する必要があります
return forPlayer:FindFirstChildWhichIsA("AudioDeviceInput")
end
local function onTeamChanged(player : Player)
local team = player.Team
if not team then return end
local device = findAudioInput(player)
if not device then return end
-- チームメンバーのみが互いに聞こえるように許可します
device.AccessType = Enum.AccessModifierType.Allow
local allowed = {}
for _, player : Player in team:GetPlayers() do
table.insert(allowed, player.UserId)
end
device:SetUserIdAccessList(allowed)
end
local function onTeamAdded(team : Team)
team.PlayerAdded:Connect(onTeamChanged)
team.PlayerRemoved:Connect(onTeamChanged)
end
for _, team : Team in Teams:GetTeams() do
onTeamAdded(team)
end
Teams.ChildAdded:Connect(function(child : Instance)
if child:IsA("Team") then
onTeamAdded(child)
end
end)

非空間的

ゲームのニーズに応じて、地理的な位置に関係なく、他のプレイヤーの音声を同じ音量で聞く方が理にかなっている場合があります。デフォルトのボイスチャットを無効にすると、以下のScriptServerScriptService内に実装することで、非空間的ボイスチャットを実現できます:

非近接チャット
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local function wireUp(source : Instance, target : Instance)
local wire = Instance.new("Wire")
wire.SourceInstance = source
wire.TargetInstance = target
wire.Parent = source
end
-- すべてのプレイヤーの音声用のグローバルボリュームスライダーを設定
local volumeSlider = Instance.new("AudioFader", Workspace)
local output = Instance.new("AudioDeviceOutput", Workspace)
wireUp(volumeSlider, output)
local function onPlayerAdded(player : Player)
local device = Instance.new("AudioDeviceInput", player)
device.Player = player
-- 新しいプレイヤーのマイク入力をグローバルボリュームスライダーにルーティング
wireUp(device, volumeSlider)
end
for _, player in Players:GetPlayers() do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
LocalScript
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local function onDescendantAdded(descendant : Instance)
if descendant:IsA("Wire") then
descendant:Destroy()
end
end
for _, descendant in player:GetDescendants() do
onDescendantAdded(descendant)
end
player.DescendantAdded:Connect(onDescendantAdded)

場所ごとに無効にする

ゲーム内のすべての場所でボイスチャットを有効にしたくない場合、ボイスチャットが有効な特定の場所で無効にすることができます。

ゲーム内の特定の場所でボイスチャットを無効にするには:

  1. エクスプローラーウィンドウで右クリックし、コンテキストメニューから**サービスを表示…**を選択します。

  2. ポップアップウィンドウでVoiceChatServiceを選択し、挿入をクリックします。サービスがエクスプローラーの階層に表示されます。

    エクスプローラー階層内のVoiceChatService
  3. VoiceChatServiceが選択されている状態で、プロパティウィンドウでEnableDefaultVoiceを無効にします。

  4. 変更を保存するために場所を公開し、すべてのサーバーで変更が適用されるようにサーバーを再起動します。

ステータスを確認する

プレイヤーがボイスチャットを有効にしているかどうかは、IsVoiceEnabledForUserIdAsync()LocalScript内で呼び出すか、RunContextEnum.RunContext.Clientに設定されたScript内で呼び出すことで確認できます。

クライアントスクリプト - ボイスチャットのステータスを確認
local Players = game:GetService("Players")
local VoiceChatService = game:GetService("VoiceChatService")
local localPlayer = Players.LocalPlayer
local success, enabled = pcall(function()
return VoiceChatService:IsVoiceEnabledForUserIdAsync(localPlayer.UserId)
end)
if success and enabled then
print("ボイスチャットが有効です!")
end
©2026 Roblox Corporation。Roblox(ロブロックス)、RobloxロゴおよびPowering Imaginationは、米国並びにその他の国における登録商標および非登録商標です。