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.
Events
Feuert, wenn eine andere Instanz über einen AudioEmitter mit der Wire verbunden oder getrennt wird.
Eigenschaften
AngleAttenuation
AudioInteractionGroup
DistanceAttenuation
SimulationFidelity
Methoden
GetInteractingListeners
Rückgaben
SetDistanceAttenuation
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