AudioEmitter
*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.
AudioEmitter emituje sygnały dźwiękowe w świat. Dostarcza pojedynczy
AudioEmitters słyszalne przez AudioListeners w celu wdrożenia 3D lokalizacji przestrzennej.
Przykłady kodu
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()
Podsumowanie
Właściwości
Reprezentuje, jak zmienia się percepcja pojemności dźwięku w zależności od kąta między AudioListener i LookVector związanym z AudioEmitter.
Kontrolery, które AudioListeners są w stanie usłyszeć ten AudioEmitter .
Reprezentuje, jak zmienia się dostrzegany przez słuchawki poziom dźwięku, gdy dystans między AudioListener a AudioEmitter zwiększa się.
Metody
Zdobadza korektę kątową, którą używa AudioEmitter, lub pustą tabelę, jeśli używa domyślnej korekty kątowej.
Zwraca Wires, które są połączone z określonym przypinać.
Zdobadza dystrybucję zmniejszenia dystrybucji Class.AudioEmitter lub pustą tabelę, jeśli używa domyślnej dystrybucji.
Zdefiniuje korektę kątową, którą AudioEmitter powinien używać, lub używa stałą korektę głośności 1 , jeśli nie zostanie ona zdefiniowana.
Ustawia kurwę zmniejszenia dystrybucji, którą powinien używać AudioEmitter, lub używa odwrotnej krawędzi załadowania, jeśli nie zostanie ona zapewniona.
Właściwości
AngleAttenuation
Reprezentuje krętę o wysokości nad kątem, która wpływa na to, jak głośno słyszy się AudioListener , AudioEmitter , LookVector i 2>Class.Audio2>, w zależności od kąta między nimi a 5>Datatype.CFrame.LookVector|LookVector5> związanym z 8>Class.Audio8>.
Ta właściwość jest wewnętrzna i nie może być dostępna przez skrypcity; istnieje, aby wspierać replikację. Zobacz SetAngleAttenuation() dla szczegółów użycia.
AudioInteractionGroup
Jeśli AudioEmitter i AudioListener dzielą się grupainterakcji, to słuchacz jest w stanie usłyszeć emittera.
DistanceAttenuation
Reprezentuje kurwę zasięgu głośności, która wpływa na to, jak głośno słucha się AudioListener , w zależności od dystansu między nimi.
Ta właściwość jest wewnętrzna i nie może być dostępna przez skrypcity; istnieje, aby wspierać replikację. Zobacz SetDistanceAttenuation() dla szczegółów użycia.
Metody
GetAngleAttenuation
Zwraca kąt zmiany tabeli na wolumen. Klucze są liczbami pomiędzy 0 i 180 (włącznie), podczas gdy wartości są liczbami pomiędzy 0 i 1> 11> (włącznie), opisując, jak zmniejsza się wolumen w zależności od kierunku. Ta metoda zwr
Zwroty
Kąt mapowania stolika do głośnika, jak opisano powyżej.
GetConnectedWires
Zwraca Wires, które są połączone z określonym przypinać. AudioEmitter ma jeden przypinać"wejścia".
Parametry
Zwroty
GetDistanceAttenuation
Zwraca odległość mapowania tabeli do głośności. Klucze są liczbami większymi lub równymi 0, podczas gdy wartości są liczbami pomiędzy 0 i 1 (włącznie), opisującymi, jak głośność zalewa się w zależności od dystansu. Ten metod weryfikuje pustą tabelę, jeśli domyślna kurwa zalewania jest używana.
Zwroty
GetInteractingListeners
Zwroty
SetAngleAttenuation
Ustawia zakręt kąta nad kątem, który wpływa na to, jak głośno słyszy się AudioListener , AudioEmitter , oparty na kącie między nimi a LookVector związanym z 1> Class.Audio1> .
Zakręt jest przedstawiony przez klucze tabeli mapujące wartości na głośnik. Klucze są oczekiwane być unikalnymi liczbami pomiędzy 0 i 180 (włącznie), podczas gdy wartości są oczekiwane być liczbami pomiędzy 0 i 1> 11> (włącz
Głośnik klasy Class.AudioEmitter z perspektywy Class.AudioListen przy użyciu kąta AudioEmitter określa poziom głośności dla punktów na kręcące
Ten poziom zostanie pomnożony przez wszystkie inne łagodniejsze zakręty (w tym te z odbiornika AudioListener ) aby uzyskać ostateczną dostępność.
Jeśli tabela jest pusta lub nil, AudioEmitter domyślnie używa korektora kąta z konstytucyjną wartością Volume 1.
Parametry
Zwroty
SetDistanceAttenuation
Ustawia kurwę zasięgu głośności, która wpływa na to, jak głośno słucha się AudioListener , w zależności od dystansu między nimi.
Zakręt jest przedstawiony przez klucze dystansu mapy tabeli do wartości głosu. Klucze są oczekiwane być unikalnymi liczbami większymi niż lub równymi 0, podczas gdy wartości są oczekiwane być liczbami pomiędzy 0 i 1 (łącznie). Tabel w zawierających do 400 pary kluczy-wartości.
Głośnik klasy Class.AudioEmitter z perspektywy Class.AudioListen jest determinowany przez liniowe interpolowanie między poziomami głośności dla punktów na krzywej, które maj
Ten poziom zostanie pomnożony przez wszystkie inne łagodniejsze zakręty (w tym te z odbiornika AudioListener ) aby uzyskać ostateczną dostępność.
Jeśli tabela jest pusta lub nil, AudioEmitter domyślnie używa długości skurczu określonej przez prawo odwrotnego kваadratu.
Parametry
Zwroty
Przykłady kodu
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