Lớp công cụ
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.
Tóm Tắt
Thuộc Tính
AngleAttenuation:Flyweight |
DistanceAttenuation:Flyweight |
Phương Pháp
GetAudibilityFor(listener: AudioListener):number |
GetConnectedWires(pin: string):{Wire} |
SetAngleAttenuation(curve: Dictionary):() |
SetDistanceAttenuation(curve: Dictionary):() |
Sự Kiện
WiringChanged(connected: boolean,pin: string,wire: Wire,instance: Instance):RBXScriptSignal |
Mẫu mã
Chơi một tài sản từ nhiều vị trí 3D cùng một lúc
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ài Liệu Tham Khảo API
Thuộc Tính
AngleAttenuation
AudioEmitter.AngleAttenuation:Flyweight
DistanceAttenuation
AudioEmitter.DistanceAttenuation:Flyweight
SimulationFidelity
Phương Pháp
GetAudibilityFor
Tham Số
Lợi Nhuận
GetInteractingListeners
SetAngleAttenuation
SetDistanceAttenuation
Tham Số
Lợi Nhuận
()
Mẫu mã
Sự giảm âm thanh khoảng cách tùy chỉnh
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 studs, người nghe nghe thấy emitter này với âm lượng tối đa
curve[100] = 0.4 -- Ở khoảng cách 100 studs, người nghe nghe thấy emitter này với âm lượng 40%
curve[300] = 0 -- Ở bất kỳ khoảng cách nào xa hơn 300 studs, người nghe không thể nghe thấy emitter này
emitter:SetDistanceAttenuation(curve)
-- Nhân đôi đường cong giảm âm thanh từ cách thực thi giọng nói cũ
-- Giọng nói mặc định không sử dụng API âm thanh mới sử dụng giảm âm thanh bình phương từ 7 đến 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)
endSự Kiện