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 ra các dòng âm thanh vào thế giớ
AudioEmitters được nghe bởi AudioListeners để thực hiện 3D spatialization.
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
Đại diện cho âm lượng thực sự của âm thanh phát ra dựa trên góc giữa một AudioListener và một LookVector liên kết với AudioEmitter .
Các điều khiển nào đó AudioListeners có thể nghe thấy cái này AudioEmitter .
Biểu thị cách sự nhận biết của khối lượng âm thanh phát ra thay đổi khi khoảng cách giữa một AudioListener và một AudioEmitter tăng lên.
Phương Pháp
Nhận đường cong giảm giá góc mà Class.AudioEmitter đang sử dụng, hoặc là một bảng trống nếu nó đang sử dụng đường cong mặc định.
Điều khiển trả về một loạt các Wires được kết nối với một mắt ghimđặc định.
Nhận đường cong giảm giá khoảng cách mà AudioEmitter đang sử dụng, hoặc là một bảng trống nếu nó đang sử dụng đường cong mặc định.
Điều chỉnh góc suy giảm áp dụng cho AudioEmitter , hoặc sử dụng một đường cong suy giảm t�� nhẹn 1 nếu không có góc suy giảm được cung cấp.
Điều chỉnh hệ số mời kích thước của khu vực mà AudioEmitter sử dụng, hoặc sử dụng hệ số mời ngược khi không có.
Thuộc Tính
AngleAttenuation
Đại diện một hình dạng trục dưới góc ảnh hưởng đến âm lượng mà một AudioListener đang nghe AudioEmitter, dựa trên góc giữa họ và Datatype.CFrame.LookVector|LookVector liên kết với LookVector .
Đặt tính này là nội tại và không thể được truy cập bởi các script; nó tồn tại để hỗ trợ replication. Xem SetAngleAttenuation() để thông tin 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 thấy emitter.
DistanceAttenuation
Đại diện một hình dạng trên khoảng cách tác động ảnh hưởng đến âm lượng mà một AudioListener đang nghe AudioEmitter, dựa trên khoảng cách giữa họ.
Đặt tính này là nội tại và không thể được truy cập bởi các script; nó tồn tại để hỗ trợ replication. Xem SetDistanceAttenuation() để thông tin chi tiết sử dụng.
Phương Pháp
GetAngleAttenuation
Điều chỉnh góc bản đồ đến âm lượng. Các chìa khóa là số từ 0 đến 180 (bao gồm), trong khi giá trị là số từ 0 đến 1> 11> (bao gồm) mô tả cách âm
Lợi Nhuận
Góc bản đồ bảng đến âm lượng, như được mô tả ở trên.
GetConnectedWires
Điều khiển trả lại một loạt các Wires được kết nối với một ghimđược xác định. AudioEmitter có một ghim"Input".
Tham Số
Lợi Nhuận
GetDistanceAttenuation
Quy đổi khoảng cách dịch chuyển của bảng đến volume. Các chìa khóa là các số lớn hơn hoặc bằng 0, trong khi giá trị là các số từ 0 đến 1 (bao gồm) mô tả cách dịch chuyển qua khoảng cách. Phương thức này trả lại một bảng trống nếu dịch chuyển mặc định được sử dụng.
Lợi Nhuận
GetInteractingListeners
Lợi Nhuận
SetAngleAttenuation
Đặt một đường cong âm thanh qua góc nhìn thay đổi khối lượng của một AudioListener , dựa trên góc giữa họ và AudioEmitter được kết hợp với LookVector .
Hình dạng được diễn tả bằng một bảng tính góc dùng để đại diện giá trị âm lượng. Các chìa khóa được mong đợi là những số độc nhất trong 0 và 180 (bao gồm), trong k
Âm lượng của AudioEmitter từ góc nhìn của một AudioListener ở một góc nhìn <
Âm lượng này sẽ được nhân với các âm lượng từ tất cả các hàm chuẩn hóa khác (bao gồm những hàm chuẩn hóa trên đang nhận AudioListener ) để có được khả năng nghe 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 giá góc với giá trị âm lượng 1 .
Tham Số
Lợi Nhuận
SetDistanceAttenuation
Đặt một đường cong trên khoảng cách vol-over-距離 ảnh hưởng đến âm lượng mà một AudioListener đang nghe AudioEmitter, dựa trên khoảng cách giữa họ.
Hình dạng được diễn tả bằng một bảng map dữ liệu để biểu tượng giá trị âm lượng. Các chìa khóa được mong đợi là những số độc nhất hơn hoặc bằng 0, trong khi giá trị được mong đợi là những số từ 0 đến 1 (bao gồm). Các bảng có chứa lên đến 400 cặp giá
Âm lượng của AudioEmitter từ góc nhìn của một AudioListener ở khoảng c
Âm lượng này sẽ được nhân với các âm lượng từ tất cả các hàm chuẩn hóa khác (bao gồm những hàm chuẩn hóa trên đang nhận AudioListener ) để có được khả năng nghe cuối cùng.
Nếu bảng trống hoặc nil, thì AudioEmitter mặc định sử dụng một đường cong giảm giáp phản xạ được xác định bởi luật phản xạ ngượ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