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 strumienie audio do świata.Zapewnia pojedynczą przepustkę Wejścia , którą można połączyć z jednym lub więcej Wires.Każdy strumień podłączony do AudioEmitter zostanie rozpuszczony w świecie z pozycji rodzica nadawcy.Jeśli rodzic jest Attachment , Camera lub PVInstance , pozycja świata rodzica zostanie wykorzystana.Jeśli rodzic nie jest jedną z tych klas, AudioEmitter jest skutecznie milczący.
AudioEmitters są słyszane przez AudioListeners w celu wdrożenia 3D spacjalizacji.
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ę postrzegany poziom dźwięku emitowanego w oparciu o kąt między AudioListener a LookVector związanym z AudioEmitter .
Sterowania, które AudioListeners są zdolne usłyszeć to AudioEmitter .
Reprezentuje sposób, w jaki postrzegana głośność emitowanego dźwięku zmienia się wraz z zwiększeniem odległości między AudioListener a AudioEmitter.
Kontroluje, jak szczegółowa powinna być symulacja dźwięku dla tego AudioEmitter .
Metody
Zdobywa krzywą zmniejszenia kąta, którą używa AudioEmitter, lub pustą tabelę, jeśli używa domyślnej krzywej.
Zwraca tablicę Wires, która jest połączona z określonym przypinać.
Zdobywa krzywą ograniczenia dystansu, którą używa AudioEmitter, lub pustą tabelę, jeśli używa domyślnej krzywej.
Ustawia krzywą zmniejszenia kąta, którą AudioEmitter powinien używać, lub używa stałą krzywą objętości 1, jeśli żadna nie jest dostarczana.
Ustawia krzywą wygaszania odległości, którą AudioEmitter powinien używać, lub używa odwrotnej krzywej wygaszania, jeśli żadna nie jest dostarczana.
Zdarzenia
Wystrzeliwuje, gdy inna instancja jest połączona z lub odłączona od AudioEmitter za pomocą Wire .
Właściwości
AngleAttenuation
Reprezentuje krzywą objętości-przez-kąt, która wpływa na to, jak głośno AudioListener usłyszy AudioEmitter , w oparciu o kąt między nimi i LookVector związany z AudioEmitter .
Właściwość ta jest wewnętrzna i nie może być dostępna dla skryptów; istnieje, aby wspierać replikację. Zobacz SetAngleAttenuation() dla szczegółów użytkowania.
AudioInteractionGroup
Jeśli AudioEmitter i AudioListener dzielą się grupainterakcji, słuchacz jest w stanie usłyszeć nadawcę.
DistanceAttenuation
Reprezentuje krzywą objętości na odległość, która wpływa na to, jak głośno AudioListener usłyszy AudioEmitter, w oparciu o odległość między nimi.
Właściwość ta jest wewnętrzna i nie może być dostępna dla skryptów; istnieje, aby wspierać replikację. Zobacz SetDistanceAttenuation() dla szczegółów użytkowania.
SimulationFidelity
Kontroluje, jak szczegółowa powinna być symulacja audio dla tego AudioEmitter , podobnie jak MeshPart.CollisionFidelity lub MeshPart.RenderFidelity .
AudioEmitters i AudioListeners które nie zgadzają się z niezbędnym poziomem szczegółowości, użyją mniej szczegółowej opcji.
Metody
GetAngleAttenuation
Zwraca kąt mapowania tabeli do objętości.Klucze to liczby pomiędzy 0 a 180 (włącznie), podczas gdy wartości to liczby pomiędzy 0 a 1 (włącznie) opisujące, w jaki sposób zmniejsza się objętość w zależności od kierunku.Ta metoda zwraca pustą tabelę, jeśli używana jest domyślna krzywa zmniejszenia kąta.
Zwroty
Kąt mapowania tabeli do objętości, jak opisano powyżej.
GetConnectedWires
Zwraca tablicę Wires, która jest połączona z określonym przypinać. AudioEmitter ma jedną przypinać"Wejście".
Parametry
Zwroty
GetDistanceAttenuation
Zwraca odległość mapowania tabeli do objętości.Klucze to liczby większe lub równe 0, podczas gdy wartości to liczby pomiędzy 0 a 1 (włącznie) opisujące, w jaki sposób zmniejsza się głośność na odległość.Ta metoda zwraca pusty stół, jeśli używana jest domyślna krzywa ograniczenia dystansu.
Zwroty
GetInteractingListeners
Zwroty
SetAngleAttenuation
Ustawia krzywą głośności-na-kąt, która wpływa na to, jak głośno AudioListener usłyszy AudioEmitter , w oparciu o kąt między nimi i LookVector związany z AudioEmitter .
Krzywa jest reprezentowana przez klucze mapowania tablicy do wartości objętości.Oczekuje się, że klucze będą unikalnymi numerami pomiędzy 0 a 180 (włącznie), podczas gdy wartości będą numerami pomiędzy 0 a 1 (włącznie).Wspierane są tabele zawierające do 400 par kluczowych wartości.
Głosność AudioEmitter z perspektywy AudioListener w kącie a jest określana przez liniową interpolację między poziomami objętości dla punktów na krzywej, których wartości kąta są bezpośrednio powyżej i poniżej a .Jeśli nie ma punktu poniżej a lub punktu powyżej a, wybierany jest poziom głośności innego punktu.Zasadniczo krzywa jest sekwencją punktów połączonych liniami proste, a poza jej lewym i prawym końcem krzywa rozciąga się na zewnątrz na ich odpowiednich poziomach głośności.
Ta objętość zostanie pomnożona przez objętości z wszystkich innych krzywych wygłuszania (w tym tych na odbiorze AudioListener ), aby uzyskać ostateczną słyszalność.
Jeśli tabela jest pusta lub nil , domyślnie używa się AudioEmitter kursu ograniczenia kąta z wartością stałej objętości 1 .
Parametry
Zwroty
SetDistanceAttenuation
Ustawia krzywą głośności na odległość, która wpływa na to, jak głośno AudioListener usłyszy AudioEmitter, w oparciu o odległość między nimi.
Krzywa jest reprezentowana przez klucze mapowania tablicy do wartości objętości.Oczekuje się, że klucze będą unikalnymi numerami większymi niż lub równymi 0, podczas gdy wartości mają być liczbami pomiędzy 0 a 1 (włącznie).Wspierane są tabele zawierające do 400 par kluczowych wartości.
Głosność AudioEmitter z perspektywy AudioListener z odległością d jest określana przez liniową interpolację między poziomami głośności dla punktów na krzywej, których wartości odległości są bezpośrednio powyżej i poniżej d .Jeśli nie ma punktu poniżej d lub punktu powyżej d, wybierany jest poziom głośności innego punktu.Zasadniczo krzywa jest sekwencją punktów połączonych liniami proste, a poza jej lewym i prawym końcem krzywa rozciąga się w nieskończoność na ich odpowiednich poziomach głośności.
Ta objętość zostanie pomnożona przez objętości z wszystkich innych krzywych wygłuszania (w tym tych na odbiorze AudioListener ), aby uzyskać ostateczną słyszalność.
Jeśli tabela jest pusta lub nil , domyślnie AudioEmitter używa krzywej wygładzania dystansu określonej przez prawo odwróconego kwadratu.
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
Zdarzenia
WiringChanged
Wydarzenie, które wystrzeliwuje po tym, jak Wire łączy się lub odłącza się, a które Wire jest teraz połączone lub było wcześniej połączone z przypinką na AudioEmitter i z niektórymi innymi dostępnymi instancjami.
Parametry
Czy instancja została połączona czy odłączona.
Przypinka na AudioEmitter , która jest przeznaczona dla celów Wire.
The Wire pomiędzy AudioEmitter i inną instancja.