AudioEmitter

Veraltete anzeigen

*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

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

Eigenschaften

AngleAttenuation

BinaryString
Roblox-Sicherheit
Parallel lesen

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

Parallel lesen

Wenn ein AudioEmitter und ein AudioListener eine Gruppeteilen, dann ist der Zuhörer in der Lage, den Emitter zu hören.

DistanceAttenuation

BinaryString
Roblox-Sicherheit
Parallel lesen

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

Instances

Gibt eine Matrix von Wires zurück, die mit dem angegebenen anheftenverbunden ist. AudioEmitter hat einen "Eingang"anheften.

Parameter

pin: string

Rückgaben

Instances

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

Instances

Rückgaben

Instances

SetAngleAttenuation

void

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

curve: Dictionary

Rückgaben

void

SetDistanceAttenuation

void

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

curve: Dictionary

Rückgaben

void

Code-Beispiele

Custom Distance Attenuation

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

Ereignisse