AudioEmitter
*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
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 basierend auf dem Winkel zwischen einem AudioListener und dem LookVector , der mit dem AudioEmitter verbunden ist, ändert.
Steuerelemente, die in der Lage sind, dies zu hören .
Repräsentiert, wie sich die wahrgenommene Lautstärke des abgestrahlten Sounds ändert, wenn die Entfernung zwischen einem AudioListener und dem AudioEmitter zunimmt.
Steuert, wie detailliert die Audiosimulation für diesen AudioEmitter sein sollte.
Methoden
Holen Sie sich die Angriffsverminderungskurve, die der AudioEmitter verwendet, oder eine leere Tabelle, wenn er die Standardkurve verwendet.
Berechnet, wie hörbar dieser Emitter für einen bestimmten AudioListener ist.
Gibt eine Reihe von Wires, die mit dem angegebenen Pin verbunden sind, zurück.
Holt sich die Abstandsverminderungskurve, die der AudioEmitter verwendet, oder eine leere Tabelle, wenn er die Standardkurve verwendet.
Listen alle AudioListeners, die in der Lage sind, diesen Emitter zu hören.
Legt die Winkelabschwächungskurve fest, die die AudioEmitter verwenden sollte, oder verwendet eine konstante Kurve der Lautstärke 1, wenn keine bereitgestellt wird.
Legt die Abstandsverminderungskurve fest, die die AudioEmitter verwenden sollte, oder verwendet eine umgekehrte Rolloff-Kurve, wenn keine bereitgestellt wird.
Ereignisse
Feuert, wenn eine andere Instanz über einen AudioEmitter mit der Wire verbunden oder getrennt wird.
Eigenschaften
AngleAttenuation
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
Wenn ein AudioEmitter und ein AudioListener eine Interaktionsgruppe teilen, ist der Empfänger in der Lage, den Emitter zu hören.
DistanceAttenuation
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().
SimulationFidelity
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
Rückgaben
GetConnectedWires
Gibt eine Reihe von Wires, die mit dem angegebenen Pin verbunden sind. AudioEmitter hat eine "Eingabe"-Pin.
Parameter
Rückgaben
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
GetInteractingListeners
Gibt eine Array von AudioListeners, die einen AudioInteractionGroup mit dem Emitter teilen.
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
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
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 -- 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
Ob die Instanz verbunden oder getrennt wurde.
Die Pins auf der AudioEmitter, die die Wire Ziele sind.
Die Wire zwischen der AudioEmitter und der anderen Instanz.