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.
Kiểm soát mức độ chi tiết mô phỏng âm thanh nên có cho điều này AudioEmitter .
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.
Tính toán cách phát âm của nhà phát này là bao nhiêu đối với một AudioListener cụ thể.
Trả về một array của Wires được kết nối với chân đượ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.
Danh sách tất cả AudioListeners những thứ có thể nghe thấy emitter này.
Đặ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
AudioInteractionGroup
DistanceAttenuation
SimulationFidelity
Phương Pháp
GetInteractingListeners
Lợi Nhuận
SetDistanceAttenuation
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 -- Trong khoảng cách 10 đinh tán, người lắng nghe nghe nhà phát này ở âm lượng tối đa
curve[100] = 0.4 -- Ở khoảng cách 100 đinh tán, người lắng nghe nghe phát xạ này ở 40% âm lượng
curve[300] = 0 -- Ở bất kỳ khoảng cách xa hơn 300 đinh tán, người lắng nghe không thể nghe thấy nhà phát này
emitter:SetDistanceAttenuation(curve)
-- Sao chép đồ thị cuộn từ thực hiện cũ của giọng nói
-- Giọng mặc định mà không có API âm thanh mới sử dụng công thức giảm dần từ 7 đến 80 đinh tán
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