ボイスチャット

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

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

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

ボイスチャットの有効化

ボイスチャットは、最大100人のプレイヤーがいるすべての新しいゲームにおいて、電話番号確認済みの13歳以上のユーザーにデフォルトで有効になっています。既存のゲームでボイスを有効にするか、新しいゲームで無効にするには、次の手順を行います。

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

この設定を有効にすると、該当する13歳以上のユーザーはあなたのボイスチャットを選択できます。ボイスチャットを有効にすることはスピーチ-to-テキスト APIを使用するために必要です。

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

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

  1. エクスペリエンス設定ウィンドウの左側のナビゲーションでプレースを選択します。ゲーム内のすべてのプレースが表示されます。
  2. 100人を超えるプレイヤーを持つプレースの隣にある**⋯**ボタンをクリックし、プレースを構成を選択します。
  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があることを想定しています。Playerオブジェクトに親されます
-- これは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. 変更を保存するためにプレースを公開し、すべてのサーバーで変更が効力を持つようにサーバーを再起動します。

ステータスを確認

ボイスチャットが有効になっているかどうかは、LocalScript内でIsVoiceEnabledForUserIdAsync()を呼び出すか、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は、米国並びにその他の国における登録商標および非登録商標です。