AudioEmitter
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
AudioEmitter phát luồng âm thanh ra thế giới.Nó cung cấp một đầu nhập duy nhất có thể được kết nối với bởi một hoặc nhiều Wires .Bất kỳ luồng nào được kết nối với một AudioEmitter được phát sóng ra thế giới từ vị trí của cha của người phát.Nếu cha là một Attachment , Camera hoặc PVInstance , vị trí thế giới của cha sẽ được sử dụng.Nếu cha không phải là một trong những lớp này, AudioEmitter là hiệu quả im lặng.
AudioEmitters được nghe bởi AudioListeners để thực hiện không gian hóa 3D.
Mẫu mã
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()
Tóm Tắt
Thuộc Tính
Biểu diễn cách âm lượng cảm nhận của âm thanh phát thay đổi dựa trên góc giữa một AudioListener và LookVector liên quan đến AudioEmitter .
Các điều khiển mà AudioListeners có thể nghe thấy điều này AudioEmitter .
Biểu diễn cách âm lượng được cảm nhận của âm thanh phát thay đổi khi khoảng cách giữa một AudioListener và AudioEmitter tăng lên.
Phương Pháp
Nhận được đường cong giảm góc mà AudioEmitter đang sử dụng, hoặc một bảng trống nếu nó sử dụng đường cong mặc định.
Trả về một array của Wires được kết nối với ghimđược chỉ định.
Nhận được đường cong giảm khoảng cách mà AudioEmitter đang sử dụng, hoặc một bảng trống nếu nó sử dụng đường cong mặc định.
Đặt đường cong giảm góc mà AudioEmitter nên sử dụng hoặc sử dụng một đường cong cố định về âm lượng 1 nếu không có gì được cung cấp.
Đặt đường cong suy giảm khoảng cách mà AudioEmitter nên sử dụng hoặc sử dụng đường cong suy giảm đảo ngược nếu không có gì được cung cấp.
Sự Kiện
Bắt lửa khi một instance khác được kết nối hoặc thoát kết nối với AudioEmitter qua một Wire .
Thuộc Tính
AngleAttenuation
Biểu diễn một đường cong âm lượng-theo-góc ảnh hưởng đến cách lớn tiếng một AudioListener sẽ nghe được AudioEmitter , dựa trên góc giữa chúng và LookVector liên quan đến AudioEmitter .
Thuộc tính này là nội bộ và không thể truy cập bởi các kịch bản; nó tồn tại để hỗ trợ sao chép. Xem SetAngleAttenuation() đối với chi tiết sử dụng.
AudioInteractionGroup
Nếu một AudioEmitter và một AudioListener chia sẻ một nhóm tương tác, thì người lắng nghe có thể nghe được người phát.
DistanceAttenuation
Biểu diễn một đường cong âm lượng qua khoảng cách ảnh hưởng đến cách mạnh mẽ mà AudioListener sẽ nghe được AudioEmitter , dựa trên khoảng cách giữa chúng.
Thuộc tính này là nội bộ và không thể truy cập bởi các kịch bản; nó tồn tại để hỗ trợ sao chép. Xem SetDistanceAttenuation() đối với chi tiết sử dụng.
SimulationFidelity
Phương Pháp
GetAngleAttenuation
Trả về một góc độ bản đồ bảng lên khối lượng.Các chìa khóa là số từ 0 đến 180 (bao gồm), trong khi các giá trị là số từ 0 đến 1 (bao gồm) mô tả cách giảm âm lượng tùy thuộc vào hướng.Phương pháp này trả về một bảng trống nếu đường cong giảm thiểu góc mặc định đang được sử dụng.
Lợi Nhuận
Góc định vị bảng đến âm lượng, như đã mô tả ở trên.
GetConnectedWires
Trả về một array của Wires được kết nối với ghimđầu vào được chỉ định. AudioEmitter có một ghim"Input".
Tham Số
Lợi Nhuận
GetDistanceAttenuation
Trả về khoảng cách bản đồ bảng lên khối lượng.Chìa khóa là số lớn hơn hoặc bằng 0, trong khi giá trị là số nằm giữa 0 và 1 (bao gồm) mô tả cách giảm âm lượng theo khoảng cách.Phương pháp này trả về một bảng trống nếu đường cong giảm khoảng cách mặc định đang được sử dụng.
Lợi Nhuận
GetInteractingListeners
Lợi Nhuận
SetAngleAttenuation
Đặt một đường cong âm lượng-theo-góc ảnh hưởng đến cách lớn tiếng một AudioListener sẽ nghe được AudioEmitter , dựa trên góc giữa chúng và LookVector liên quan đến AudioEmitter .
Đường cong được biểu diễn bằng các phím đại diện cho góc bản đồ bảng đến giá trị khối lượng.Các chìa khóa được mong đợi là các số duy nhất giữa 0 và 180 (bao gồm), trong khi các giá trị được mong đợi là các số giữa 0 và 1 (bao gồm).Các bảng chứa tối đa 400 cặp chìa khóa-giá trị được hỗ trợ.
Âm lượng của AudioEmitter từ quan điểm của một AudioListener ở một góc a được xác định bằng cách dịch chuyển song song giữa các cấp độ âm lượng cho các điểm trên đường cong mà các giá trị góc của chúng nằm trực tiếp trên và dưới a .Nếu không có điểm nào dưới a hoặc không có điểm nào trên a , cấp độ âm lượng của điểm khác được chọn.Về cơ bản, đường cong là một chuỗi các điểm được kết nối bởi các đường thẳng, và ngoài các điểm cuối cùng bên trái và bên phải, đường cong mở rộng ra ngoài tại các mức âm lượng tương ứng của chúng.
Khối lượng này sẽ được nhân với các khối lượng từ tất cả các đường cong giảm thanh khác (bao gồm cả những khối lượng trên đường nhận AudioListener ) để có được độ lớn cuối cùng.
Nếu bảng trống hoặc nil , AudioEmitter mặc định sử dụng một đường cong giảm góc với giá trị tĩnh của volume là 1 .
Tham Số
Lợi Nhuận
SetDistanceAttenuation
Đặt một đường cong âm lượng qua khoảng cách ảnh hưởng đến cách to lớn một AudioListener sẽ nghe được AudioEmitter , dựa trên khoảng cách giữa chúng.
Đường cong được đại diện bởi các phím định vị khoảng cách bản đồ bảng đến giá trị khối lượng.Các chìa khóa được mong đợi là các số duy nhất lớn hơn hoặc bằng 0, trong khi các giá trị được mong đợi là các số từ 0 đến 1 (bao gồm cả).Các bảng chứa tối đa 400 cặp chìa khóa-giá trị được hỗ trợ.
Âm lượng của AudioEmitter từ quan điểm của một AudioListener ở một khoảng cách d được xác định bằng cách dịch chuyển song song giữa các mức âm lượng cho các điểm trên đường cong có giá trị khoảng cách trực tiếp trên và dưới d .Nếu không có điểm nào dưới d hoặc không có điểm nào trên d , cấp độ âm lượng của điểm khác được chọn.Về cơ bản, đường cong là một chuỗi các điểm được kết nối bởi các đường thẳng, và ngoài các điểm cuối cùng bên trái và bên phải, đường cong mở rộng vô cực tại các mức âm lượng tương ứng của chúng.
Khối lượng này sẽ được nhân với các khối lượng từ tất cả các đường cong giảm thanh khác (bao gồm cả những khối lượng trên đường nhận AudioListener ) để có được độ lớn cuối cùng.
Nếu bảng trống hoặc nil , AudioEmitter mặc định sử dụng một đường cong giảm khoảng cách được xác định bởi luật đảo ngược vuông góc.
Tham Số
Lợi Nhuận
Mẫu mã
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
Sự Kiện
WiringChanged
Sự kiện xảy ra sau khi một Wire được kết nối hoặc mất kết nối, và sự kiện Wire bây giờ hoặc đã từng kết nối với một chốt trên AudioEmitter và một số ví ví dụ / trường hợpkhác có thể kết nối được.
Tham Số
Whether ví dụ đã kết nối hay mất kết nối.
Chốt trên AudioEmitter mà mục tiêu Wire nhắm.
Các Wire giữa AudioEmitter và ví dụ / trường hợpkhác.