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
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
Kiểm soát mức độ chi tiết mô phỏng âm thanh nên có cho điều này AudioEmitter , tương tự như MeshPart.CollisionFidelity hoặc MeshPart.RenderFidelity .
AudioEmitters và AudioListeners mà không đồng ý về mức độ chi tiết cần thiết sẽ sử dụng lựa chọn ít chi tiết hơn.
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.
GetAudibilityFor
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ể.Khối lượng kết quả, dao động từ 0 đến 1, chiếm tỷ lệ suy giảm khoảng cách và góc trên cả người phát và người nghe.
Tham Số
Lợi Nhuận
GetConnectedWires
Trả về một array của Wires được kết nối với chân đầu vào được chỉ định. AudioEmitter có một chân "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
Trả về một array của AudioListeners có chia sẻ AudioInteractionGroup với người phát với emitter.
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 -- 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
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í dụ khá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à instance khác.