SoundService

非推奨を表示

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

作成できません
サービス

エクスペリエンスでの Sounds プレイの様々な側面を決定するサービス。SoundService は、グループが機能するために必須ではないものの、SoundGroups を保存するためにもよく使用されます。

SoundService プロパティは、AmbientReverbDistanceFactorDopplerScale 、および RolloffScale などのような、すべての Sounds がエクスペリエンスでどのようにプレイするかを変更するために使用できます。SetListener() 機能は、サウンドが聞こえる位置を設定できるようにします。

コードサンプル

The code in this sample, when ran from a LocalScript, will change the SoundService.AmbientReverb property of SoundService when the player is inside a BasePart tagged using CollectionService.

To add or remove tags and reverb types, change the entries in the 'reverbTags' table.

Dynamic Reverb System

local Players = game:GetService("Players")
local CollectionService = game:GetService("CollectionService")
local SoundService = game:GetService("SoundService")
local localPlayer = Players.LocalPlayer
local reverbTags = {
["reverb_Cave"] = Enum.ReverbType.Cave,
}
-- collect parts and group them by tag
local parts = {}
for reverbTag, reverbType in pairs(reverbTags) do
for _, part in pairs(CollectionService:GetTagged(reverbTag)) do
parts[part] = reverbType
end
end
-- function to check if a position is within a part's extents
local function positionInPart(part, position)
local extents = part.Size / 2
local offset = part.CFrame:PointToObjectSpace(position)
return offset.x < extents.x and offset.y < extents.y and offset.z < extents.z
end
local reverbType = SoundService.AmbientReverb
while true do
task.wait()
if not localPlayer then
return
end
local character = localPlayer.Character
-- default to no reverb
local newReverbType = Enum.ReverbType.NoReverb
if character and character.PrimaryPart then
local position = character.PrimaryPart.Position
-- go through all the indexed parts
for part, type in pairs(parts) do
-- see if the character is within them
if positionInPart(part, position) then
-- if so, pick that reverb type
newReverbType = type
break
end
end
end
-- set the reverb type if it has changed
if newReverbType ~= reverbType then
SoundService.AmbientReverb = newReverbType
reverbType = newReverbType
end
end

概要

プロパティ

方法

プロパティ

AmbientReverb

並列読み取り

このプロパティの各 Enum.ReverbType オプションは、FMOD サウンドエンジンで利用可能なプリセットに対応します。たとえば、AmbientReverbEnum.ReverbType.Hangar に設定されると、音が大きな囲われた空間にいるように広がり、シミュレートされます。

変更する AmbientReverb は、Roblox のサウンドエンジンに使用される次のプロパティに影響します。

  • 反射時間。
  • 初期反射遅延時間。
  • 最初の反射に対する遅れた再発散時間。
  • 高周波を参照。
  • 高周波から中周波の崩壊時間比率。
  • 遅い再爆発減衰中のエコー密度を制御する値。
  • 遅い再爆発減衰でモーダル密度を制御する値。
  • 低周波を参照。
  • 低周波での相対部屋効果レベル。
  • 高周波での相対部屋効果レベル。
  • ルーム効果に対する早期反射レベル。
  • 中周波でのルーム効果レベル。

CharacterSoundsUseNewApi

プラグインのセキュリティ
並列読み取り

DefaultListenerLocation

プラグインのセキュリティ
並列読み取り

デフォルトで配置する AudioListener の場所を決定します。それぞれのオプションの詳細な説明は、Enum.ListenerLocation を参照してください。

DistanceFactor

並列読み取り

ボリューム減衰を計算するときに、SoundService メートルとして考慮するスタッドの数、Sounds 親にBasePart または Attachment を持つ。

デフォルトでは、このプロパティは 3.33 で、メートルはボリューム軽減の目的で 3.33スタッドと考えられます。DistanceFactor が大きいほど、サウンドは徐々に軽減します。

エクスペリエンスが異なるスケールを使用している場合は、このプロパティを変更することをお勧めします。たとえば、より大きなカスタムキャラクターを使用するとき、DistanceFactor を減少したいかもしれません。

DopplerScale

並列読み取り

このプロパティは、Sound のピッチがドップラー効果により変化する程度を決定し、音源と観察者が音の移動に伴って遠くか近くに移動することにより、音のピッチが変化する現象です。親に Sounds または BasePartAttachment が付いたものにのみ影響します。

この値を増加すると、ドップラー効果の影響が強まり、減少すると最小化されます。デフォルトでは、このプロパティの値は 1 です。

RespectFilteringEnabled

並列読み取り

このプロパティは、Sound 再生がクライアントからサーバーへ、およびサーバーから再生されるかどうかを決定します。言い換えれば、 が呼び出されると、このプロパティが になると、サウンドはそれぞれのクライアントでのみ再生します。このプロパティが false である場合、他のクライアントも音を聞くことになります。

デフォルトは true で、フィルタリングが有効になっています。

RolloffScale

並列読み取り

Sound ボリュームの消滅速度を設定します。RolloffScale が高いほど、リスナーとサウンドの距離が増加するにつれて、サウンドの音量がより速く減少します。

このプロパティは、Sounds のプロパティが RollOffMode に設定されているのみに適用されます(デフォルト)、または Inverse または InverseTaperedLinearLinearSquare モードは、このプロパティに影響を受けない異なる衰減モデルを使用します。このプロパティは、Sounds に親属していない BasePart または Attachment にも影響しません。

VolumetricAudio

スクリプト作成できません
並列読み取り

方法

GetListener

このメソッドは、SoundService 現在のリスナータイプとリスナーとして設定されたものを返し、つまりエクスペリエンスのオーディオがプレイヤーに「聴かれる」ポイントを意味します。デフォルトでは、リスナーは Workspace.CurrentCamera に設定されます。リスナーは SetListener() を使用して変更できます。

最初に返された結果は、リスナーの Enum.ListenerType であり、2番目の結果はそのタイプに依存します:


<th>説明</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Enum.ListenerType.カメラ</code></td>
<td><code>Class.Workspace.CurrentCamera|CurrentCamera</code> が常に使用されているため、リスナーオブジェクトを返さない。</td>
</tr>
<tr>
<td><code>Enum.ListenerType.CFrame</code></td>
<td>返す <code>Datatype.CFrame</code> は、<code>Class.SoundService:SetListener()|SetListener()</code> で使用されています。</td>
</tr>
<tr>
<td><code>Enum.ListenerType.ObjectPosition</code></td>
<td>Class.BasePart を返し、 Class.SoundService:SetListener()|SetListener() で使用される。</td>
</tr>
<tr>
<td><code>Enum.ListenerType.ObjectCFrame</code></td>
<td>Class.BasePart を返し、 Class.SoundService:SetListener()|SetListener() で使用される。</td>
</tr>
</tbody>
リスナータイプ

戻り値

現在の Enum.ListenerType と、リスナーが設定されたもの。リスナーは BasePartCFrame 、または nil です。

OpenAttenuationCurveEditor

()
プラグインのセキュリティ

パラメータ

selectedCurveObjects: Instances
既定値: ""

戻り値

()

OpenDirectionalCurveEditor

()
プラグインのセキュリティ

パラメータ

selectedCurveObjects: Instances
既定値: ""

戻り値

()

PlayLocalSound

()

ローカルで Sound を再生し、サウンドはこのメソッドを呼んだクライアントだけが聞くことができ、親元がどこにあるかに関係なくなります。このメソッドは、たとえば Studio クライアントでローカルで Sound を再生するために最も役立ちます、例えば ScriptPlugin

パラメータ

sound: Instance

再生する Sound

既定値: ""

戻り値

()

SetListener

()

クライアントが使用するリスナーを設定し、つまりプレイヤーがエクスペリエンスのオーディオを「聴いた」ポイントを設定します。親が になった場合、リスナーは再生音のボリュームと左右のバランスを影響します。

デフォルトでは、リスナーは Workspace.CurrentCamera に設定されますが、さまざまな種類のリスナーを使用できます。

リスナーは GetListener() を使用して回収できます。

パラメータ

listenerType: Enum.ListenerType

リスナーの Enum.ListenerType

既定値: ""
listener: Tuple
既定値: ""

戻り値

()

イベント