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.
Oblicza, jak słyszalny jest ten emiter dla konkretnego AudioListener.
Zwraca tablicę Wires, która jest połączona z określonym przypinką.
Zdobywa krzywą ograniczenia dystansu, którą używa AudioEmitter, lub pustą tabelę, jeśli używa domyślnej krzywej.
Wylicza wszystkie AudioListeners, które są w stanie usłyszeć ten nadawca.
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ę grupą interakcji, 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.
GetAudibilityFor
Oblicza, jak słyszalny jest ten emiter dla konkretnego AudioListener.Wynikowa objętość, wahająca się od 0 do 1, stanowi odległość i zmniejszenie kąta na obu emiterze i odbiorcy.
Parametry
Zwroty
GetConnectedWires
Zwraca tablicę Wires, która jest połączona z określonym przypinką. AudioEmitter ma jedną przypinkę "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
Zwraca tablicę AudioListeners, która dzieli się AudioInteractionGroup z emiterem.
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 -- W odległości 10 metrów słuchacze słyszą ten emiter w pełnym głośności
curve[100] = 0.4 -- Na odległość 100 metrów słuchacze słyszą ten emiter przy głośności 40%
curve[300] = 0 -- Na dowolnej odległości dalej niż 300 metrów słuchacze nie mogą usłyszeć tego emitera
emitter:SetDistanceAttenuation(curve)
-- Odtwórz krzywą wycofania z poprzedniej implementacji głosu
-- Domyślny głos bez nowego interfejsu audio używa wykładniczej redukcji o zakresie od 7 do 80 szpilkami
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ą instancją.