AudioEmitter

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

AudioEmitter sendet Audiodatenströme in die Welt.Es bietet einen einzigen Eingang-Pin, der mit einem oder mehreren verbunden werden kann>.Alle Streams, die an einen AudioEmitter angeschlossen sind, werden von der Position des Senders in die Welt übertragen.Wenn der Elternteil ein Attachment , Camera oder PVInstance ist, wird die Weltposition des Elternteils verwendet.Wenn der Eltern nicht eine dieser Klassen ist, ist die AudioEmitter effektiv stumm.

AudioEmitters werden von AudioListeners gehört, um 3D-Spatialisierung zu implementieren.

Code-Beispiele

Playing one asset from multiple 3d locations at once

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

Methoden

Ereignisse

Eigenschaften

AngleAttenuation

BinaryString
Roblox-Sicherheit
Parallel lesen

Repräsentiert eine Lautstärke-über-Winkel-Kurve, die beeinflusst, wie laut ein AudioListener die AudioEmitter hört, basierend auf dem Winkel zwischen ihnen und dem LookVector , das mit dem AudioEmitter verbunden ist.

Diese Eigenschaft ist interne und kann nicht von Skripten aufgerufen werden; sie existiert, um die Replikation zu unterstützen. Siehe SetAngleAttenuation().

AudioInteractionGroup

Parallel lesen

Wenn ein AudioEmitter und ein AudioListener eine Interaktionsgruppe teilen, ist der Empfänger in der Lage, den Emitter zu hören.

DistanceAttenuation

BinaryString
Roblox-Sicherheit
Parallel lesen

Repräsentiert eine Lautstärke-Entfernungskurve, die beeinflusst, wie laut ein AudioListener die AudioEmitter hört, basierend auf der Entfernung zwischen ihnen.

Diese Eigenschaft ist interne und kann nicht von Skripten aufgerufen werden; sie existiert, um die Replikation zu unterstützen. Siehe SetDistanceAttenuation().

Parallel lesen

Steuert, wie detailliert die Audiosimulation für dieses AudioEmitter, ähnlich wie MeshPart.CollisionFidelity oder MeshPart.RenderFidelity sein sollte.

AudioEmitters und AudioListeners, die sich über die notwendige detaillierungsstufe nicht einig sind, verwenden die weniger detaillierte option.

Methoden

GetAngleAttenuation

Gibt einen Tabelle-zu-Volumen-Angel zurück.Schlüssel sind Zahlen zwischen 0 und 180 (inklusive), während Werte Zahlen zwischen 0 und 1 sind (inklusive), die beschreiben, wie sich die Lautstärke abschwächt, abhängig von der Richtung.Diese Methode gibt eine leere Tabelle zurück, wenn die Standard-Angelreduktionskurve verwendet wird.


Rückgaben

Tabelle-zu-Volume-Angel wie oben beschrieben.

GetAudibilityFor

Berechnet, wie hörbar dieser Emitter für einen bestimmten AudioListener ist.Das resultierende Volumen, das von 0 bis 1 reicht, macht die Entfernungs- und Winkelabschwächung sowohl auf dem Sender als auch auf dem Empfänger aus.

Parameter

listener: AudioListener
Standardwert: ""

Rückgaben

GetConnectedWires

Instances

Gibt eine Reihe von Wires, die mit dem angegebenen Pin verbunden sind. AudioEmitter hat eine "Eingabe"-Pin.

Parameter

pin: string
Standardwert: ""

Rückgaben

Instances

GetDistanceAttenuation

Gibt eine Tabelle-zu-Volumen-Kartendistanz zurück.Schlüssel sind Zahlen größer als oder gleich 0, während Werte Zahlen zwischen 0 und 1 (einschließlich) sind, die beschreiben, wie sich Lautstärke über Entfernung verringert.Diese Methode gibt eine leere Tabelle zurück, wenn die Standardabstandsverminderungskurve verwendet wird.


Rückgaben

GetInputPins


Rückgaben

GetInteractingListeners

Instances

Gibt eine Array von AudioListeners, die einen AudioInteractionGroup mit dem Emitter teilen.


Rückgaben

Instances

GetOutputPins


Rückgaben

SetAngleAttenuation

()

Legt eine Lautstärke-über-Winkel-Kurve fest, die beeinflusst, wie laut ein AudioListener die AudioEmitter hört, basierend auf dem Winkel zwischen ihnen und dem LookVector , das mit dem AudioEmitter verbunden ist.

Die Kurve wird durch Tabellierungswinkel repräsentiert, die auf Lautstärkewerte zurückgreifen.Es wird erwartet, dass Schlüssel eindeutige Zahlen zwischen 0 und 180 (einschließlich) sind, während Werte Zahlen zwischen 0 und 1 (einschließlich) sein sollten.Tabellen mit bis zu 400 Schlüssel-Wert-Paaren werden unterstützt.

Die Lautstärke des AudioEmitter von der Perspektive eines AudioListener an einem Winkel a wird durch lineare Interpolation zwischen den Lautstärkeleveln für die Punkte auf der Kurve bestimmt, deren Winkelwerte direkt über und unter a liegen.Wenn es entweder keinen Punkt unter a oder keinen Punkt über a gibt, wird der Lautstärkepegel des anderen Punkts gewählt.Im Wesentlichen ist die Kurve eine Sequenz von Punkten, die durch gerade Linien verbunden sind, und jenseits ihrer linken und rechten Endpunkte erstreckt sich die Kurve nach außen auf ihre jeweiligen Lautstärkelevel.

Dieses Volumen wird mit den Volumen aller anderen Dämpfungskurven (einschließlich derjenigen auf der Empfangsebene AudioListener) multipliziert, um die endgültige Hörbarkeit zu erhalten.

Wenn der Tisch leer oder nil ist, wird der AudioEmitter Standard verwendet, eine Winkelabschwächungskurve mit dem konstanten Lautstärkewert von 1 zu verwenden.

Parameter

curve: Dictionary
Standardwert: ""

Rückgaben

()

SetDistanceAttenuation

()

Legt eine Lautstärke-über-Distanz-Kurve fest, die beeinflusst, wie laut ein AudioListener die AudioEmitter hört, basierend auf der Entfernung zwischen ihnen.

Die Kurve wird durch Tabelle-Karten-Distanzschlüssel zu Lautstärke-Werten repräsentiert.Es wird erwartet, dass Schlüssel eindeutige Zahlen sind, die größer oder gleich 0 sind, während Werte Zahlen zwischen 0 und 1 (einschließlich) sein sollten.Tabellen mit bis zu 400 Schlüssel-Wert-Paaren werden unterstützt.

Die Lautstärke des AudioEmitter von der Perspektive eines AudioListener auf einer Entfernung von d wird durch lineare Interpolation zwischen den Lautstärkeleveln für die Punkte auf der Kurve bestimmt, deren Abstandswerte direkt über und unter d liegen.Wenn es entweder keinen Punkt unter d oder keinen Punkt über d gibt, wird der Lautstärkepegel des anderen Punkts gewählt.Im Wesentlichen ist die Kurve eine Sequenz von Punkten, die durch gerade Linien verbunden sind, und jenseits ihrer linken und rechten Endpunkte erstreckt sich die Kurve unendlich nach außen auf ihre jeweiligen Lautstärkelevel.

Dieses Volumen wird mit den Volumen aller anderen Dämpfungskurven (einschließlich derjenigen auf der Empfangsebene AudioListener) multipliziert, um die endgültige Hörbarkeit zu erhalten.

Wenn der Tisch leer oder nil ist, wird der AudioEmitter Standard verwendet, eine Abstandsverminderungskurve zu verwenden, die durch das umgekehrte Quadratgesetz bestimmt wird.

Parameter

curve: Dictionary
Standardwert: ""

Rückgaben

()

Code-Beispiele

Benutzerdefinierte Entfernungsreduzierung

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 -- Innerhalb einer Entfernung von 10 Klötzen hören die Empfänger diesen Emitter auf vollem Lautstärke
curve[100] = 0.4 -- Auf einer Entfernung von 100 Klötzen hören die Empfänger diesen Emitter bei 40% Lautstärke
curve[300] = 0 -- Auf jeder Entfernung weiter als 300 Klötze kann der Empfänger diesen Emitter nicht hören
emitter:SetDistanceAttenuation(curve)
-- Wiederhole die Roll-Off-Kurve aus der alten Voice-Implementierung
-- Die Standardstimme ohne die neue Audio-API verwendet einen quadratischen Rolloff von 7 bis 80 Klötzen
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

Ereignisse

WiringChanged

Ereignis, das nachdem abgefeuert wird, nachdem ein Wire verbunden oder getrennt wurde, und das Wire jetzt oder zuvor mit einem Pin auf der AudioEmitter und mit einigen anderen verwendbaren Instanzen verbunden war.

Parameter

connected: boolean

Ob die Instanz verbunden oder getrennt wurde.

pin: string

Die Pins auf der AudioEmitter, die die Wire Ziele sind.

wire: Wire

Die Wire zwischen der AudioEmitter und der anderen Instanz.

instance: Instance

Die andere Instanz, die über die Wire verbunden ist oder war.