AudioEmitter

แสดงที่เลิกใช้งานแล้ว

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

AudioEmitter ส่งสตรีมเสียงออกสู่โลกมันให้พินเดียว อินพุต ที่สามารถเชื่อมต่อกับโดยหนึ่งหรือมากกว่า Wiresสตรีมใดๆ ที่เชื่อมต่อกับ AudioEmitter จะถูกส่งออกไปยังโลกจากตำแหน่งของผู้ส่งหากผู้ปกครองเป็น Attachment , Camera หรือ PVInstance ตำแหน่งโลกของผู้ปกครองจะถูกใช้หากผู้ปกครองไม่ใช่หนึ่งในคลาสเหล่านี้ AudioEmitter จะเงียบอย่างมีประสิทธิภาพ

AudioEmitters ได้ยินโดย AudioListeners เพื่อที่จะใช้การจำลองพื้นที่ 3D

ตัวอย่างโค้ด

Playing one asset from multiple 3d locations at once

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()

สรุป

คุณสมบัติ

  • AngleAttenuation:BinaryString
    การรักษาความปลอดภัยของ Roblox
    อ่านพร้อมๆ กัน

    แทนที่วิธีที่ระดับเสียงที่รับรู้ของเสียงที่ปล่อยเปลี่ยนตามมุมระหว่าง AudioListener และ LookVector ที่เกี่ยวข้องกับ AudioEmitter

  • อ่านพร้อมๆ กัน

    การควบคุมที่ AudioListeners สามารถได้ยินสิ่งนี้ AudioEmitter ได้

  • DistanceAttenuation:BinaryString
    การรักษาความปลอดภัยของ Roblox
    อ่านพร้อมๆ กัน

    แสดงถึงวิธีที่ระดับเสียงที่รับรู้เปลี่ยนไปตามระยะห่างระหว่าง AudioListener และ AudioEmitter เพิ่มขึ้น

  • อ่านพร้อมๆ กัน

วิธีการ

อีเวนต์

คุณสมบัติ

AngleAttenuation

BinaryString
การรักษาความปลอดภัยของ Roblox
อ่านพร้อมๆ กัน

แทนที่เส้นโค้งระดับเสียงตามมุมที่มีผลต่อวิธีที่ AudioListener จะได้ยิน AudioEmitter ขึ้นอยู่กับมุมระหว่างพวกเขาและ LookVector ที่เกี่ยวข้องกับ AudioEmitter

คุณสมบัตินี้เป็นภายในและไม่สามารถเข้าถึงได้โดยสคริปต์; มันมีอยู่เพื่อสนับสนุนการเลียนแบบ ดู SetAngleAttenuation() สำหรับรายละเอียดการใช้งาน

AudioInteractionGroup

อ่านพร้อมๆ กัน

หาก AudioEmitter และ AudioListener แบ่งปันกลุ่มการโต้ตอบแล้วผู้ฟังสามารถได้ยินผู้ส่งได้

DistanceAttenuation

BinaryString
การรักษาความปลอดภัยของ Roblox
อ่านพร้อมๆ กัน

แทนที่เส้นโค้งปริมาณตามระยะทางที่มีผลต่อวิธีที่ AudioListener จะได้ยิน AudioEmitter ตามระยะห่างระหว่างพวกเขา

คุณสมบัตินี้เป็นภายในและไม่สามารถเข้าถึงได้โดยสคริปต์; มันมีอยู่เพื่อสนับสนุนการเลียนแบบ ดู SetDistanceAttenuation() สำหรับรายละเอียดการใช้งาน

อ่านพร้อมๆ กัน

วิธีการ

GetAngleAttenuation

คืนมุมการจัดเตรียมตารางไปยังปริมาณกุญแจเป็นตัวเลขระหว่าง 0 และ 180 (รวม) ในขณะที่ค่าเป็นตัวเลขระหว่าง 0 และ 1 (รวม) ที่อธิบายวิธีการลดปริมาณขึ้นอยู่กับทิศทางวิธีนี้จะคืนโต๊ะว่างหากใช้เส้นโค้งการลดองศาเริ่มต้น


ส่งค่ากลับ

มุมการแผนที่โต๊ะไปยังปริมาณตามที่อธิบายไว้ข้างต้น

GetAudibilityFor

พารามิเตอร์

listener: AudioListener
ค่าเริ่มต้น: ""

ส่งค่ากลับ

GetConnectedWires

Instances

ส่งคืนคอลเลกชันของ Wires ปักหมุดAudioEmitter ปักหมุด"อินพุต" หนึ่งตัว

พารามิเตอร์

pin: string
ค่าเริ่มต้น: ""

ส่งค่ากลับ

Instances

GetDistanceAttenuation

คืนระยะการแผนผังตารางไปยังปริมาณกุญแจเป็นตัวเลขที่มากกว่าหรือเท่ากับ 0 ในขณะที่ค่าเป็นตัวเลขระหว่าง 0 และ 1 (รวมถึง) อธิบายวิธีการลดปริมาณในระยะทางวิธีนี้จะคืนโต๊ะว่างเปล่าหากใช้เส้นโค้งการลดระยะทางเริ่มต้น


ส่งค่ากลับ

GetInputPins


ส่งค่ากลับ

GetInteractingListeners

Instances

ส่งค่ากลับ

Instances

GetOutputPins


ส่งค่ากลับ

SetAngleAttenuation

()

ตั้งเส้นโค้งระดับเสียงเกินมุมที่มีผลต่อวิธีที่ จะได้ยิน ตามมุมระหว่างพวกเขาและ ที่เกี่ยวข้องกับ โดยอิงจากมุมระหว่างพวกเขาและ

เส้นโค้งจะถูกแทนที่ด้วยกุญแจแผนที่ตารางเพื่อค่าปริมาณคาดว่าคีย์จะเป็นหมายเลขที่ไม่ซ้ำกันระหว่าง 0 และ 180 (รวมถึง) ในขณะที่ค่าคาดว่าจะเป็นหมายเลขระหว่าง 0 และ 1 (รวมถึง)โต๊ะที่มีคู่คีย์-ค่าสูงสุด 400 คู่สนับสนุน

ปริมาณของ AudioEmitter จากมุมมองของ AudioListener ในมุมมองของ a ที่อยู่ในระยะ a จะถูกกำหนดโดยการเลื่อนเชิงเส้นระหว่างระดับปริมาณสำหรับจุดบนโค้งที่มีมุมมองของมุมมองเป็นตรงข้ามและด้านล่างของ หากไม่มีจุดใดต่ำกว่า a หรือไม่มีจุดใดสูงกว่า a ระดับความดังของจุดอื่นจะถูกเลือกโดยทั่วไปแล้ว เส้นโค้งเป็นลำดับจุดที่เชื่อมต่อโดยเส้นตรงและนอกจากจุดสิ้นสุดด้านซ้ายและขวาแล้วเส้นโค้งจะขยายออกไปที่ระดับปริมาณตามลำดับตามลำดับ

ปริมาณนี้จะถูกคูณกับปริมาณจากสัญญาณการลดความถี่ทั้งหมด (รวมถึงสัญญาณที่ได้รับใน AudioListener ) เพื่อให้ได้ความถี่สุดท้าย

หากตารางว่างเปล่าหรือ ค่าเริ่มต้นจะใช้เส้นโค้งการลดองศาด้วยค่าปริมาณคงที่ของ

พารามิเตอร์

curve: Dictionary
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetDistanceAttenuation

()

ตั้งเส้นโค้งระดับเสียงทางระยะที่มีผลต่อวิธีที่ AudioListener จะได้ยิน AudioEmitter ขึ้นอยู่กับระยะห่างระหว่างพวกเขา

เส้นโค้งจะถูกแทนที่ด้วยกุญแจแผนที่ระยะทางตารางเพื่อค่าปริมาณคาดว่าคีย์จะเป็นหมายเลขที่ไม่ซ้ำกันมากกว่าหรือเท่ากับ 0 ในขณะที่ค่าคาดว่าจะเป็นตัวเลขระหว่าง 0 และ 1 (รวมถึง)โต๊ะที่มีคู่คีย์-ค่าสูงสุด 400 คู่สนับสนุน

ปริมาณของ AudioEmitter จากมุมมองของ AudioListener ที่อยู่ในระยะทาง d ถูกกำหนดโดยการใช้การคำนวณเชิงเส้นระหว่างระดับปริมาณสําหรับจุดบนเส้นโค้งที่มีค่าระยะทางอยู่โดยตรงเหนือและเหนือกว่า dหากไม่มีจุดใดต่ำกว่า d หรือไม่มีจุดใดสูงกว่า d ระดับความดังของจุดอื่นจะถูกเลือกโดยทั่วไปแล้ว เส้นโค้งเป็นลำดับจุดที่เชื่อมต่อโดยเส้นตรง และนอกเหนือจากจุดสิ้นสุดด้านซ้ายและขวาแล้วเส้นโค้งจะขยายออกไปอย่างไม่มีที่สิ้นสุดที่ระดับปริมาณของพวกเขาตามลำดับ

ปริมาณนี้จะถูกคูณกับปริมาณจากสัญญาณการลดความถี่ทั้งหมด (รวมถึงสัญญาณที่ได้รับใน AudioListener ) เพื่อให้ได้ความถี่สุดท้าย

หากตารางว่างเปล่าหรือ ค่าเริ่มต้นจะใช้การลดระยะทางที่กำหนดโดยกฎเชิงตรรกส่วนกลาง ซึ่งกำหนดโดยกฎเชิงตรรกส่วนกลาง

พารามิเตอร์

curve: Dictionary
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

ตัวอย่างโค้ด

Custom Distance Attenuation

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

อีเวนต์

WiringChanged

อีเวนต์ที่จะยิงหลังจากที่ Wire เชื่อมต่อหรือถูกตัดการเชื่อมต่อและ Wire ตอนนี้หรือเคยเชื่อมต่อกับพินบน AudioEmitter อินสแตนซ์

พารามิเตอร์

connected: boolean

ว่าตัวอย่างได้เชื่อมต่อหรือถูกตัดการเชื่อมต่อ

pin: string

เข็มบน AudioEmitter ที่เป้าหมาย Wire

wire: Wire

The Wire ระหว่าง AudioEmitter และตัวอย่างอื่น

instance: Instance

ตัวอย่างอื่นที่เชื่อมต่อผ่าน Wire หรือไม่