AudioEmitter
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
AudioEmitter เปิดสตรีมอินพุตเข้าสู่
AudioEmitters ได้ยินโดย AudioListeners เพื่อให้เปิดใช้งาน 3D สเปซไดรฟ์
ตัวอย่างโค้ด
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()
สรุป
คุณสมบัติ
เป็นตัวแทนว่าปริมาณเสียงที่รับรู้ของเสียงที่ปล่อยออกจะเปลี่ยนแปลงตามมุมระหว่าง AudioListener และ LookVector ที่เกี่ยวข้องกับ AudioEmitter
ควบคุมซึ่ง AudioListeners สามารถได้ยินนี่ AudioEmitter .
แสดงวิธีที่ระดับเสียงที่ได้รับการเปลี่ยนแปลงตามระยะทางระหว่าง AudioListener และ AudioEmitter เพิ่มขึ้น
วิธีการ
รับค่าเฉลี่ยมุมที่ใช้โดย AudioEmitter หรือรับตารางว่างหากใช้ค่าเฉลี่ยมุมเริ่มต้น
กลับรายการ Wires ปักหมุด
รับค่าความเสียหายทางระยะที่ใช้โดย AudioEmitter หรือรับค่าความเสียหายทางระยะที่ว่างเปล่าหากใช้ค่าความเสียหายทางระยะเริ่มต้น
ตั้งค่าความเสียหายเหลี่ยมของมุมที่ AudioEmitter ควรใช้หรือใช้ความเสียหายเหลี่ยมของมุมที่ 1 หากไม่มีให้
ตั้งค่าความเสียหายเวลาที่เกิดขึ้นจริงที่ AudioEmitter ควรใช้หรือใช้ความเสียหายเวลาถอยหลังหากไม่มีให้
คุณสมบัติ
AngleAttenuation
เป็นตัวแทนของโค้งสี่เหลี่ยมที่มีความเคลื่อนไหวของมุมที่ส่งผลกระทบต่อความดังของ AudioListener โดยมีมุมระหว่างพวกเขาและ AudioEmitter ที่เกี่ย
สมบัตินี้เป็นสมบัติภายในและไม่สามารถเข้าถึงได้โดยสคริปต์; มันมีไว้เพื่อสนับสนุนการเลียนแบบ ดู SetAngleAttenuation() สำหรับรายละเอียดการใช้งาน.
AudioInteractionGroup
หาก AudioEmitter และ AudioListener แชร์กลุ่มการโต้ตอบ ผู้ฟังจะสามารถได้ยินเอมิตเตอร์
DistanceAttenuation
แทนที่คันเลื่อนระยะเวลาที่มีผลกระทบต่อปริมาณเสียงที่ได้ยินได้ระหว่างพวกเขา โดยพิจารณาจากระยะเวลาระหว่างพวกเขา
สมบัตินี้เป็นสมบัติภายในและไม่สามารถเข้าถึงได้โดยสคริปต์; มันมีไว้เพื่อสนับสนุนการเลียนแบบ ดู SetDistanceAttenuation() สำหรับรายละเอียดการใช้งาน.
วิธีการ
GetAngleAttenuation
กลับมุมมองโต๊ะสู่พิเศษ กุญแจเป็นตัวเลขระหว่าง 0 และ 180 (รวมทั้ง), ขณะที่ค่าเป็นตัวเลขระหว่าง 0 และ 1> 1
ส่งค่ากลับ
มุมการจัดเค้าโต๊ะสู่ปริมาณเสียง ตามที่อธิบายไว้ด้านบน
GetConnectedWires
กลับรายการ Wires ที่เชื่อมต่อกับเข็มขัดที่กำหนด AudioEmitter มีหนึ่ง "ปักหมุด" พิน
พารามิเตอร์
ส่งค่ากลับ
GetDistanceAttenuation
กลับระยะการแปลงตารางไปเป็นความดังของเสียง คีย์เป็นตัวเลขมากกว่าหรือเท่ากับ 0 ในขณะที่ค่าเป็นตัวเลขระหว่าง 0 และ 1 (รวมทั้ง) อธิบายวิธีการที่ความดังเสียงลดลงเมื่อเวลาผ่านไป
ส่งค่ากลับ
GetInteractingListeners
ส่งค่ากลับ
SetAngleAttenuation
ตั้งค่าโค้งสูงข้างมุมที่ส่งผลกระทบต่อความดังของ AudioListener โดยอาศัยจุดมุ่งหมายระหว่างพวกเขาและ AudioEmitter ที่เกี่ยวข้องกับ LookVector
เครื่องกำเนิดเป็นรูปตัวอักษรที่มีความลึกของชุดตารางที่เป็นตัวแทนของค่าเป็นรูปสี่เหลี่ยมผืน คีย์คาดหวังว่าจะเป็นตัวเลขที่ไม่เหม
ปริมาณของ AudioEmitter จากมุมมองของ AudioListener ที่มีมุมมองอยู่ระหว
ระดับนี้จะถูกคูณกับระดับจากโค้งการลดลงทั้งหมด (รวมทั้งโค้งการลดลงที่อยู่ในตัวรับ AudioListener ) เพื่อให้ได้ความสามารถในการได้ยินสุดท้าย
หากตารางเปล่าหรือ nil ให้ค่าความเรียบของมุมโดยใช้ค่าความเรียบของมุมที่คงที่ของ AudioEmitter
พารามิเตอร์
ส่งค่ากลับ
SetDistanceAttenuation
ตั้งค่าโค้งส้นเสียงที่เกิดขึ้นระหว่าง AudioListener และ AudioEmitter ตามระยะทางระหว่างพวกเขา
สัญลักษณ์นี้แสดงโดยระยะการแปลงของตารางสู่ค่าเป็นรูปตัวอักษร คีย์คาดหวังว่าจะเป็นตัวเลขที่ใหญ่กว่าหรือเท่ากับ 0 ในขณะที่ค่าคือตัวเลขระหว่าง 0 และ 1 (รวมทั้ง) ตารางที่มีได
ปริมาณของ AudioEmitter จากมุมมองของ AudioListener ที่อยู่ไกลออกไป
ระดับนี้จะถูกคูณกับระดับจากโค้งการลดลงทั้งหมด (รวมทั้งโค้งการลดลงที่อยู่ในตัวรับ AudioListener ) เพื่อให้ได้ความสามารถในการได้ยินสุดท้าย
หากตารางเปล่าหรือ nil ให้ค่าเริ่มต้นของ AudioEmitter คือการใช้เวลาลดลงที่กำหนดโดยกฎของเวลากลางสอง
พารามิเตอร์
ส่งค่ากลับ
ตัวอย่างโค้ด
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