AudioEmitter
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
AudioEmitter emits audio streams into the world. It provides a single Input pin that can be
AudioEmitters 3D yerleştirmeyi uygulamak için AudioListeners tarafından duyulur.
Kod Örnekleri
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()
Özet
Özellikler
Emitselenen sesin algılanan hacmi, bir AudioListener ile ilgili açı arasında değişen şekilde değiştirir.
Bunu duyabilecek olan kontroller AudioListeners .
Emitselenen sesin algılanan hacmi, bir AudioListener ile AudioEmitter arasındaki mesafe artıkça nasıl değişir gösterir.
Yöntemler
Class.AudioEmitter kullandığı açı azaltma kurvasını alır veya varsayılan kurva kullanıyorsa boş bir tablo getirir.
Belirli bir sabitle'e bağlanan Wires bir matrisi iade eder.
Class.AudioEmitter kullandığı mesafe azaltma kurvasını alır veya varsayılan kurva kullanıyorsa boş bir tablo getirir.
Class.AudioEmitter ın kullanması gereken açı azaltma eğrisini belirler veya hiçbiri sağlanmazsa 1 değerinde bir sürekli eğrisi kullanır.
Class.AudioEmitter ın kullanması gereken mesafe azaltma eğrisini ayarlar veya hiçbiri sağlanmazsa bir ters yatış eğrisi kullanır.
Özellikler
AngleAttenuation
Bir Class.AudioEmitter``Datatype.CFrame.LookVector|LookVector ın duyduğu 1> Class.Audio1> ın duyduğunu belirten bir hacim yanığını temsil eder, bu da onun ortasındaki 4> Class.Audio4> ile ilgilidir.
Bu özellik içidir ve kullanıcı tarafından erişilemez; Replikasyonu desteklemek için mevcut. Ayrıntılar için SetAngleAttenuation() görün.
AudioInteractionGroup
Bir AudioEmitter ve bir AudioListener etkileşim gruppaylaşırsa, dinleyici emitter'ı duyabilir.
DistanceAttenuation
Mesafeleri aralarındaki uzaklığa bağlı olarak Class.AudioListener``Class.AudioEmitter 'ın duyduğu Class.Audio 'ı ne kadar yüksek sesle duyacağını etkileyen bir hacim dalgası temsil eder.
Bu özellik içidir ve kullanıcı tarafından erişilemez; Replikasyonu desteklemek için mevcut. Ayrıntılar için SetDistanceAttenuation() görün.
Yöntemler
GetAngleAttenuation
Bir tablo hizalama açısını hacme döndürür. Tuşlar 0 ve 180 (dahil) arasındaki sayılardır, değerler 0 ve 1> 11> (dahil) arasındaki sayılardır, hacme hizalama açısının azalması
Dönüşler
Yukarıda açıklanan gibi tablo hacmi için gölgeleme açısı.
GetConnectedWires
Belirli bir sabitle'e bağlanan Wires bir matrisi iade eder. AudioEmitter 'in bir "Giriş" sabitle'i vardır.
Parametreler
Dönüşler
GetDistanceAttenuation
Bir tablo hacmiyle ilgili bir mesafe döndürür. Tuşlar 0'den büyük veya eşit olarak 0 olan sayılardır, değerler 0 ile 1 arasındaki bir hacim değiştirme aracı olarak açıklanır. Bu yöntem, varsayılan mesafe azaltma eğrisi kullanılıyorsa boş bir tablo döndürür.
Dönüşler
GetInteractingListeners
Dönüşler
SetAngleAttenuation
Bir Class.AudioEmitter``Datatype.CFrame.LookVector|LookVector ın duyduğu 1> Class.Audio1> ın duyduğunu belirleyen bir hacim-üstü köşe曲線si ayarlar, bu da 4> Class.Audio4> ile ilgili 7> Class.Audio7> ın duyduğunu belirleyen bir hacim-üstü köşe曲線si
Kurva, hacim değerlerine göre hacim değerlerine göre bir tablo açılır. Tuşların eşsiz olmasını bekleriz, böylece değerler arasında 0 ve 180 (dahil) arasında bir sayı olarak görülür. 0 ve 1>
a ile eğilmiş olan kurva eksenindeki noktalar için hacim seviyesi belirlenir. Bu, eğilmiş noktaların hacim se
Bu ses seviyesi, alıcı AudioListener 'deki ses seviyesi ile çarpanılacak.
Eğer masa boşsa veya nil , AudioEmitter varsayılır bir açı azaltma曲線i kullanmak için sürekli hacim değeri 1 ile.
Parametreler
Dönüşler
SetDistanceAttenuation
Mesafeleri aralarındaki uzaklığa bağlı olarak Class.AudioListener``Class.AudioEmitter 'ın duyduğu Class.Audio 'ı ne kadar yüksek sesle duyacağını etkileyen bir hacim dalgası ayarlar.
Kurva, bir tablo hacı gösteren uzaklık anahtarı değerleriyle ifade edilir. Anahtarlar 0'dan büyük veya eşit olacak şekilde benzersiz sayılar olmalıdır, değerler 0 ile 1 arasındaki sayılar arasında (dahil) olmalıdır. 400'den fazla anahtar değeri olan tablolar desteklenir.
Bir mesafedeki bir Class.AudioEmitter``Class.AudioListener volumunun yanı sıra hızlı bir şekilde yanı sıra hı
Bu ses seviyesi, alıcı AudioListener 'deki ses seviyesi ile çarpanılacak.
Tablo boşsa veya nil , AudioEmitter , yersizleme kademesi olarak belirlenen uzaklık azaltma eğrisini kullanır.
Parametreler
Dönüşler
Kod Örnekleri
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