AudioEmitter
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
AudioEmitter emits Audio-Ströme in die Welt. Es bietet eine einzige Eing
AudioEmitters werden von AudioListeners gehört, um 3D-Räumung zu implementieren.
Code-Beispiele
local part1 : BasePart = workspace.Speakers.Left
local part2 : BasePart = workspace.Speakers.Right
local player : AudioPlayer = workspace.AudioPlayer
local leftEmitter = Instance.new("AudioEmitter")
local rightEmitter = Instance.new("AudioEmitter")
local toLeft = Instance.new("Wire")
local toRight = Instance.new("Wire")
leftEmitter.Parent = part1
rightEmitter.Parent = part2
toLeft.Parent = leftEmitter
toLeft.SourceInstance = player
toLeft.TargetInstance = leftEmitter
toRight.Parent = rightEmitter
toRight.SourceInstance = player
toRight.TargetInstance = rightEmitter
player:Play()
Zusammenfassung
Eigenschaften
Repräsentiert, wie sich die wahrgenommene Lautstärke des abgestrahlten Sounds ändert, basierend auf dem Winkel zwischen einem AudioListener und dem LookVector mit dem AudioEmitter .
Steuerelemente, die AudioListeners in der Lage sind, dies zu hören AudioEmitter .
Repräsentiert, wie die wahrgenommene Lautstärke des abgestrahlten Sounds verändert, wenn die Distanz zwischen einem AudioListener und dem AudioEmitter zunimmt.
Methoden
Erhalte die Ecken-Schwellungskurve, die die AudioEmitter verwendet, oder eine leere Tabelle, wenn sie die Standard-Kurve verwendet.
Gibt eine Matrix von Wires zurück, die mit dem angegebenen anheftenverbunden ist.
Erhalte die Entfernungskorrektur Kurve, die die AudioEmitter verwendet, oder eine leere Tabelle, wenn sie die Standard Kurve verwendet.
Setzt die Winkelabschwächungskurve, die der AudioEmitter verwenden sollte, oder verwendet eine konstante Kurve von Lautstärke 1 , wenn keine angegeben wird.
Setzt die Entfernung-Attenuierungs-Kurve, die der AudioEmitter verwenden sollte, oder verwendet eine umgekehrte Rolloff-Kurve, wenn keine angegeben wird.
Eigenschaften
AngleAttenuation
Repräsentiert eine Lichtkurve, die die Lautstärke eines AudioListener ändert, basierend auf dem Winkel zwischen ihnen und dem AudioEmitter , der mit dem LookVector verbunden ist.
Diese Eigenschaft ist intern und kann nicht von Skripten aufgerufen werden; sie existiert, um die Replikation zu unterstützen. Siehe SetAngleAttenuation() für Details zur Verwendung.
AudioInteractionGroup
Wenn ein AudioEmitter und ein AudioListener eine Gruppeteilen, dann ist der Zuhörer in der Lage, den Emitter zu hören.
DistanceAttenuation
Repräsentiert eine Lautstärke über Zeit-Kurve, die die Lautstärke eines AudioListener ändert, basierend auf der Distanz zwischen ihnen.
Diese Eigenschaft ist intern und kann nicht von Skripten aufgerufen werden; sie existiert, um die Replikation zu unterstützen. Siehe SetDistanceAttenuation() für Details zur Verwendung.
Methoden
GetAngleAttenuation
Gibt einen Tabelle-Mapping-Winkel auf die Lautstärke zurück. Schlüssel sind Zahlen zwischen 0 und 180 (einschließlich), während Werte Zahlen zwischen 0 und 1> 11> (einschließlich) beschreiben, wie die Lautstärke abhängig von der Richtung abmildert. Diese Methode gibt eine leere Tabelle
Rückgaben
Tabellemapping-Winkel zum Volumen, wie oben beschrieben.
GetConnectedWires
Gibt eine Matrix von Wires zurück, die mit dem angegebenen anheftenverbunden ist. AudioEmitter hat einen "Eingang"anheften.
Parameter
Rückgaben
GetDistanceAttenuation
Gibt eine Tabelle zurück, um die Skalierung der Größe zu Volumen. Schlüssel sind Zahlen größer als oder gleich mit 0, während Werte Zahlen zwischen 0 und 1 (einschließlich) beschreiben, wie die Skalierung der Größe über die Distanz verringert. Dieser Methoden gibt eine leere Tabelle zurück, wenn die Standard-Skalierungskurve verwendet wird.
Rückgaben
GetInteractingListeners
Rückgaben
SetAngleAttenuation
Setzt eine Lautstärke über Angulo-Kurve, die beeinflusst, wie laut ein Class.Audio Class.AudioEmitter``Datatype.CFrame.LookVector|LookVector 1> Class.Audio1> 4> Class.Audio4> 7> Class.Audio7> 0> Class.Audio0> 3> Class.Audio3> AudioListener6>
Die Kurve wird durch einen Tabelle-Mapping-Winkel-Schlüssel zu Lautstärke-Werten dargestellt. Schlüssel sind als einzigartige Zahlen zwischen 0 und 180 (einschließlich), während Lautstärke-Werte als Zahlen zwischen 0 und 1> 11> (einschließlich) unterstützt werden. Tabellen mit bis
Die Lautstärke des AudioEmitter von der Perspektive eines AudioListener mit einem Winkel a ist abhängig von der linearen Interpolation zwischen den Lautst
Diese Lautstärke wird mit den Lautstärken von allen anderen Abflachen-Kurven (einschließlich jener auf dem Empfänger AudioListener ) multipliziert, um die endgültige Hörbarkeit zu erhalten.
Wenn die Tabelle leer ist oder nil, verwendet der AudioEmitter Standardmäßig eine Winkelabschwächungskurve mit dem konstanten Lautstärke-Wert von 1.
Parameter
Rückgaben
SetDistanceAttenuation
Setzt eine Lautstärke über Entfernung, die die Lautstärke eines AudioListener ändert, basierend auf der Entfernung zwischen ihnen.
Die Kurve wird durch einen Tabelle-Map-Distance-Schlüssel für Volumenwerte dargestellt. Schlüssel sind erwartet einzigartige Zahlen größer als oder gleich mit 0, während Werte erwartet sind Zahlen zwischen 0 und 1 (einschließlich). Tabellen mit bis zu 400 Schlüssel-Wert-Paaren werden unterstützt.
Die Lautstärke des AudioEmitter von der Perspektive eines AudioListener in einer Entfernung von d ist durch lineare Interpolation zwischen den Lautstärke
Diese Lautstärke wird mit den Lautstärken von allen anderen Abflachen-Kurven (einschließlich jener auf dem Empfänger AudioListener ) multipliziert, um die endgültige Hörbarkeit zu erhalten.
Wenn die Tabelle leer ist oder nil, verwendet der AudioEmitter Standard, eine Entfernungskorrekturkurve zu verwenden, die vom umgekehrten Quadratgesetz bestimmt ist.
Parameter
Rückgaben
Code-Beispiele
local Players = game:GetService("Players")
local emitterPart = Instance.new("Part")
emitterPart.Anchored = true
emitterPart.Position = Vector3.new(0, 0, 0)
emitterPart.Parent = workspace
local emitter : AudioEmitter = Instance.new("AudioEmitter")
emitter.Parent = emitterPart
local curve = {}
curve[10] = 1 -- Within a distance of 10 studs, listeners hear this emitter at full volume
curve[100] = 0.4 -- At a distance of 100 studs, listeners hear this emitter at 40% volume
curve[300] = 0 -- At any distance farther than 300 studs, listeners cannot hear this emitter
emitter:SetDistanceAttenuation(curve)
-- Replicate the rolloff curve from the old voice implementation
-- Default voice without the new audio API uses quadratic rolloff ranging from 7 to 80 studs
local MIN_DISTANCE = 7
local MAX_DISTANCE = 80
local CURVE_STEP_SIZE = 2
local voiceCurve = {}
for i = MIN_DISTANCE, MAX_DISTANCE, CURVE_STEP_SIZE do
voiceCurve[i] = ((i - MIN_DISTANCE) - (MAX_DISTANCE - MIN_DISTANCE))^2 / (MAX_DISTANCE - MIN_DISTANCE)^2
end
voiceCurve[MAX_DISTANCE] = 0
local function setVoiceCurve(character)
local voiceEmitter : AudioEmitter = character:WaitForChild("AudioEmitter")
voiceEmitter:SetDistanceAttenuation(voiceCurve)
end
for _, player in Players:GetPlayers() do
if player.Character then
setVoiceCurve(player.Character)
end
player.CharacterAdded:Connect(setVoiceCurve)
end