Engine Class
AudioFilter
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
สรุป
วิธีการ
GetConnectedWires(pin: string):{Wire} |
เหตุการณ์
WiringChanged(connected: boolean,pin: string,wire: Wire,instance: Instance):RBXScriptSignal |
ตัวอย่างโค้ด
การกรองอีมิตเตอร์
-- สมมติว่าพื้นที่ทำงานมี Part ที่มี AudioEmitter และ AudioPlayer
local RunService = game:GetService("RunService")
local part: BasePart = workspace.Part
local camera: Camera = workspace.CurrentCamera
local audioPlayer: AudioPlayer = part.AudioPlayer
local audioEmitter: AudioEmitter = part.AudioEmitter
local audioListener: AudioListener = camera.AudioListener
local raycastParams = RaycastParams.new()
raycastParams.FilterDescendantsInstances = { audioEmitter.Parent }
raycastParams.FilterType = Enum.RaycastFilterType.Exclude
-- สร้าง AudioFilter ใหม่
local filter: AudioFilter = Instance.new("AudioFilter")
filter.FilterType = Enum.AudioFilterType.Lowpass12dB
filter.Frequency = 22000
filter.Q = math.sqrt(2) / 2 -- ค่านี้ Q จะผลิตกราฟโลว์พาสที่เรียบสำหรับประเภทความชัน 12dB
filter.Parent = part
-- เชื่อม AudioFilter ระหว่างผู้เล่นกับอีมิตเตอร์
local function wireTo(source: Instance, target: Instance): Wire
local wire = Instance.new("Wire")
wire.SourceInstance = source
wire.TargetInstance = target
wire.Parent = target
end
wireTo(audioPlayer, filter)
wireTo(filter, audioEmitter)
-- อัปเดตฟิลเตอร์ตามตำแหน่งของอีมิตเตอร์และฟังเชอร์
RunService.Heartbeat:Connect(function()
local emitterPos: Vector3 = part.Position
local listenerPos: Vector3 = camera.CFrame.Position
local raycastResult = workspace:Raycast(emitterPos, (listenerPos - emitterPos), raycastParams)
filter.Frequency = if raycastResult then 500 else 22000
end)เอกสารอ้างอิงเกี่ยวกับ API
คุณสมบัติ
วิธีการ
GetConnectedWires
เหตุการณ์