การเล่นเสียงเกิดขึ้นผ่าน Sound ซึ่งปล่อยเสียงภายในประสบการณ์ Roblox จะกำหนดให้แต่ละ สินทรัพย์เสียง มี ID ที่ไม่ซ้ำกัน ซึ่งคุณสามารถกำหนดให้กับ Sound เพื่อเล่นเอฟเฟคเสียงหรือเพลงเฉพาะได้ คุณสามารถตั้งค่าให้เสียงนี้เล่นอัตโนมัติเมื่อรันโปรแกรม หรือเรียกใช้ให้ เล่นจากสคริปต์
เพื่อปรับการเล่นเสียงของ Sound หลายตัว คุณสามารถกำหนดให้พวกมันอยู่ใน กลุ่มเสียง และควบคุมระดับเสียงของกลุ่มทั้งหมด รวมถึงใช้ เอฟเฟคแบบไดนามิก
สร้างวัตถุเสียง
มีสามสถานที่ที่คุณสามารถสร้างวัตถุ Sound ได้ และแต่ละสถานที่จะกำหนดว่าเสียงจะปล่อยและระดับเสียงเปลี่ยนแปลงอย่างไรในความสัมพันธ์กับตำแหน่งของผู้ใช้ภายในประสบการณ์
| สถานที่ | การปล่อยเสียง | การเปลี่ยนระดับเสียง |
|---|---|---|
| ลูกของบล็อก ลูกบาศก์ หรือทรงกระบอก BasePart. | เสียงปล่อยออกจากพื้นผิวทั้งหมดของชิ้นส่วน | ระดับเสียงเปลี่ยนแปลงตามระยะห่างระหว่างผู้ฟังเสียงของผู้ใช้และตำแหน่งของชิ้นส่วน ตลอดจนขนาด |
| ลูกของ Attachment, MeshPart, TrussPart, WedgePart, หรือ CornerWedgePart. | เสียงปล่อยออกจากจุดติดตั้งเดียวหรือศูนย์กลางของชิ้นส่วน | ระดับเสียงเปลี่ยนแปลงตามระยะห่างระหว่างผู้ฟังเสียงของผู้ใช้และตำแหน่งการติดตั้งหรือชิ้นส่วน |
| ภายใน SoundService หรือ Workspace. | เสียงปล่อยทั่วทั้งประสบการณ์ | ระดับเสียงและตำแหน่งพานจะยังคงเป็นเช่นเดียวกันไม่ว่าจะมีตำแหน่งหรือการหมุนของผู้ฟังเสียงของผู้ใช้ |
เสียงตำแหน่ง
เสียงตำแหน่งคือเสียงที่ผู้ใช้สามารถได้ยินได้ใกล้กับตำแหน่งเฉพาะในประสบการณ์ มีสองประเภทของเสียงตำแหน่งที่คุณสามารถใช้ได้: เสียงแบบโวลูเมตริกและเสียงจุด
โวลูเมตริก
เสียงโวลูเมตริกคือทางเลือกเสียงที่สมจริงที่สุด เนื่องจากมันเปลี่ยนแปลงแบบไดนามิก ขึ้นอยู่กับตำแหน่งของผู้ใช้ต่อแหล่งเสียง ตัวอย่างเช่น ถ้าผู้ใช้อยู่ภายใน BasePart ที่มีลูกเป็นวัตถุ Sound เสียงจะเล่นรอบตัวผู้ใช้ คล้ายกับเสียงดนตรีในหูฟังที่เล่นด้วยเสียงระดับเดียวกันจากลำโพงทั้งสอง เมื่อผู้ใช้ออกจากชิ้นส่วน เสียงจะค่อยๆ ลดระดับเสียงลงและกลายเป็นเสียงทิศทางมากขึ้นในแต่ละลำโพง เมื่อผู้ฟังของเขาหมุน สำหรับข้อมูลการควบคุมระดับเสียงที่มีความแตกต่างในระยะห่างจากชิ้นส่วน โปรดดูที่ RollOffMinDistance และ RollOffMaxDistance
ขนาดของ BasePart ยังส่งผลกระทบต่อระดับเสียงของเสียง เนื่องจาก BaseParts ขนาดใหญ่จะสร้างพื้นที่ที่กว้างขึ้นซึ่งผู้ใช้สามารถได้ยินเสียง และเมื่อผู้ใช้ย้ายออกจาก BasePart ขนาดใหญ่ ระดับเสียงจะลดลงช้ากว่า ตัวอย่างต่อไปนี้แสดง BasePart ขนาดของเมืองที่มีวัตถุ Sound เล่นเสียงแบบบรรยากาศ ผู้ใช้ A และ B ประสบการณ์เสียงแตกต่างกัน: ผู้ใช้ B ใกล้กับ BasePart ขนาดใหญ่ และพวกเขาได้ยินเสียงในระดับเดียวกันจากทั้งสองลำโพง ในทางกลับกัน ผู้ใช้ A อยู่ห่างออกไปจากเมืองมากขึ้น ดังนั้นเสียงที่เขาได้ยินจะเบากว่าและมีทิศทางมากกว่าเสียงของผู้ใช้ B โดยเล่นในระดับเสียงที่แตกต่างกันในแต่ละลำโพงของพวกเขา

เสียงโวลูเมตริกเป็นประโยชน์สำหรับเสียงใด ๆ ที่จำเป็นต้องมีอารมณ์แบบสมจริงรอบตัวผู้ใช้และเปลี่ยนแปลงแบบไดนามิกขึ้นอยู่กับตำแหน่งของผู้ใช้ เช่น เวทีคอนเสิร์ตหรือโซนบรรยากาศเช่น ฝนตก เมื่อคุณทดลองวางวัตถุ Sound บน BaseParts ขนาดและตำแหน่งต่าง ๆ จากผู้ใช้ คุณจะได้ยินว่าเสียงโวลูเมตริกนั้นชวนดื่มด่ำเพียงใด
เพื่อสร้างวัตถุ Sound สำหรับเสียงโวลูเมตริก:
ในหน้าต่าง Explorer ให้เลือก SoundService
ในหน้าต่าง Properties ให้ไปที่คุณสมบัติ VolumetricAudio แล้วตั้งค่าเป็น Enabled
ในหน้าต่าง Explorer ให้เคอร์เซอร์ไปเหนือ BasePart แล้วคลิกที่ปุ่ม ⊕ เมนูบริบทจะปรากฏขึ้น
จากเมนู ให้แทรก Sound
ในหน้าต่าง Properties ให้ไปที่คุณสมบัติ SoundId และป้อน ID สินทรัพย์เสียงที่ถูกต้อง.

(ทางเลือก) หากคุณต้องการให้เสียงเริ่มเล่นเมื่อประสบการณ์เริ่มต้น ให้เปิดคุณสมบัติ Playing
เสียงจุด
แตกต่างจากเสียงโวลูเมตริก เสียงจุดจะปล่อยเสียงจากแหล่งเสียงจุดเดียวเท่านั้น เสียงประเภทนี้เหมาะสำหรับการระเบิด เสียงกระแทก อุปกรณ์อิเล็กทรอนิกส์ และการสนทนา
เพื่อสร้างวัตถุ Sound สำหรับเสียงจุด:
- ในหน้าต่าง Explorer ให้เคอร์เซอร์ไปเหนือการติดตั้ง ทรัส แผ่นตัด หรือมุมที่ตัด จากนั้นคลิกที่ปุ่ม ⊕ เมนูบริบทจะปรากฏขึ้น
- จากเมนูให้แทรก Sound
- (ทางเลือก) หากคุณต้องการให้เสียงเริ่มเล่นเมื่อประสบการณ์เริ่มต้น ให้เปิดคุณสมบัติ Playing
เสียงพื้นหลัง
เสียงพื้นหลังเล่นด้วยระดับเสียงเดียวกันไม่ว่าผู้ใช้จะเดินทางไปที่ไหนในประสบการณ์ของคุณ เสียงประเภทนี้เหมาะสำหรับเพลงที่คุณต้องการเล่นให้กับผู้ใช้ โดยเฉพาะเมื่อคุณต้องการสร้างซาวด์แทร็กจากไฟล์เสียงหลายไฟล์
ดีที่สุดคือให้เก็บวัตถุ Sound สำหรับเสียงพื้นหลังในสถานที่เดียวกันของ Workspace เพื่อวัตถุประสงค์ในการจัดระเบียบขณะที่คุณยังคงเพิ่มและแก้ไขเสียงภายในประสบการณ์ของคุณ ตัวอย่างต่อไปนี้เก็บวัตถุ Sound ใหม่นี้ภายใต้คอนเทนเนอร์ SoundService เนื่องจากบริการนี้กำหนดว่าวัตถุ Sound จะเล่นในประสบการณ์อย่างไร
เพื่อสร้างวัตถุ Sound สำหรับเสียงพื้นหลัง:
- ในหน้าต่าง Explorer ให้เคอร์เซอร์ไปเหนือ SoundService แล้วคลิกที่ปุ่ม ⊕ เมนูบริบทจะปรากฏขึ้น
- จากเมนูให้แทรก Sound
- (ทางเลือก) หากคุณต้องการให้เสียงเริ่มเล่นเมื่อประสบการณ์เริ่มต้น ให้เปิดคุณสมบัติ Playing
ปรับแต่งวัตถุเสียง
คุณสมบัติของวัตถุ Sound ทำงานร่วมกันเพื่อมีอิทธิพลต่อวิธีที่ผู้ใช้สัมผัสเสียงของคุณ เช่น:
- ระดับเสียงที่พวกเขาได้ยินเสียงเฉพาะตัวและเทียบกับเสียงอื่น (ระดับเสียง).
- วิธีที่พวกเขารับรู้ระดับเสียงเมื่อพวกเขาเคลื่อนที่ออกไปจากแหล่งเสียง (RollOffMinDistance, RollOffMaxDistance, และ RollOffMode)
- ส่วนใดของเสียงที่พวกเขาสามารถฟังได้ (TimePosition).
- ความเร็วและระดับเสียงที่พวกเขาฟัง (PlaybackSpeed).
- ถ้าเสียงเล่นซ้ำอัตโนมัติเมื่อเสร็จสิ้น (Looped).
ระดับเสียง
คุณสมบัติ Volume ช่วยให้คุณตั้งค่าระดับเสียงของเสียงของคุณได้ทุกที่ตั้งแต่ 0 (เงียบ) ถึง 10 (เสียงดังก้อง) หากคุณต้องการเปลี่ยนระดับเสียงของวัตถุ Sound หลายตัวพร้อมกัน ให้จัดกลุ่มพวกมันไว้ใน กลุ่มเสียง.
RollOffMinDistance และ RollOffMaxDistance
RollOffMinDistance และ RollOffMaxDistance กำหนดระยะของการที่ผู้ใช้รับรู้ระดับเสียงจากเสียงตำแหน่ง สำหรับเสียงโวลูเมตริก, RollOffMinDistance คือระยะขั้นต่ำใน studs ที่เสียงเริ่มลดระดับเสียงเมื่อผู้ฟังของไคลเอนต์ เคลื่อนที่ออกจาก BasePart และคุณสมบัติ RollOffMaxDistance คือระยะสูงสุดใน studs ที่ผู้ฟังของไคลเอนต์สามารถได้ยินเสียงจากพื้นผิวของวัตถุ

สำหรับเสียงจุด RollOffMinDistance และ RollOffMaxDistance ทำงานคล้าย ๆ กับเสียงโวลูเมตริก แต่ระยะที่คุณสมบัติเหล่านี้ควบคุมจะไม่ล้อมรอบวัตถุ มันเพียงแค่มีผลต่อระยะห่างออกไปจากแหล่งเสียงจุด

RollOffMode
คุณสมบัติ RollOffMode ช่วยให้คุณตัดสินใจว่าเสียงจะลดระดับเสียงอย่างไรเมื่อระยะห่างระหว่างผู้ฟังของผู้ใช้และพ่อแม่วัตถุ Sound เพิ่มขึ้น คุณสามารถตั้งค่านี้ให้เป็นหนึ่งในค่าทั้งสี่ของ Enum RollOffMode

| RollOffMode | คำอธิบาย |
|---|---|
| Inverse (ค่าเริ่มต้น) | ระดับเสียงจะลดลงอย่างฉับพลันจาก RollOffMinDistance แต่ระดับเสียงที่ลดลงจะช้าลงมากขึ้นเมื่อผู้ใช้เข้าใกล้ถึง RollOffMaxDistance เมื่อพวกเขาถึง RollOffMaxDistance เสียงจะเงียบ |
| Linear | เสียงจะลดระดับเสียงอย่างเป็นเส้นตรงระหว่าง RollOffMinDistance และ RollOffMaxDistance เมื่อผู้ใช้ถึง RollOffMaxDistance เสียงจะเงียบ |
| InverseTapered | ระดับเสียงตามโมเดลผกผันเมื่อใกล้กับ RollOffMinDistance และโมเดลเส้นตรงเมื่อผู้ใช้ใกล้กับ RollOffMaxDistance เสียงจะเข้าใกล้ความเงียบที่ระยะทางสูงสุด |
| LinearSquare | เสียงจะลดระดับเสียงระหว่าง RollOffMinDistance และ RollOffMaxDistance ด้วยความสัมพันธ์เชิงเส้นกำลังสอง เสียงจะเข้าใกล้ความเงียบที่ระยะทางสูงสุด |
PlaybackSpeed
คุณสมบัติ PlaybackSpeed ช่วยให้คุณกำหนดความเร็วที่เสียงของคุณเล่นได้ ตัวอย่างเช่น หากคุณตั้งค่า PlaybackSpeed เป็นค่า 2 เสียงของคุณจะเล่นเร็วขึ้นสองเท่าและมีความถี่สูงขึ้นหนึ่งอ็อคตาฟ สำหรับค่า 0.5 เสียงจะเล่นช้าลงสองเท่าและมีความถี่ต่ำลงหนึ่งอ็อคตาฟ
| PlaybackSpeed = 0.5 | PlaybackSpeed = 1.0 | PlaybackSpeed = 2.0 |
TimePosition
คุณสมบัติ TimePosition จะแสดงว่าในวินาที ตำแหน่งใดของตัวอย่างเสียงที่ผู้ใช้กำลังฟังอยู่ ข้อมูลนี้มีประโยชน์สำหรับการเล่นเฉพาะส่วนของตัวอย่างเสียง หรือเรียกใช้อีเวนต์เมื่อเสียงถึงตำแหน่งเฉพาะ ตัวอย่างเช่น รหัสตัวอย่างต่อไปนี้ทำให้เครื่องสร้างอนุภาคปล่อยอนุภาควงแหวนสีขาวเหนือชิ้นส่วนในระยะเวลาจำกัดของเพลง
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
-- สร้างชิ้นส่วนใหม่
local part = Instance.new("Part")
part.Anchored = true
part.Color = Color3.new(0.75, 0.2, 0.5)
part.Size = Vector3.new(2, 1, 2)
part.Material = Enum.Material.Neon
part.Position = Vector3.new(0, 4, 0)
part.Parent = Workspace
-- สร้างการติดตั้งในชิ้นส่วน
local attachment = Instance.new("Attachment")
attachment.Position = Vector3.new(0, 0.5, 0)
attachment.Parent = part
-- สร้างเครื่องสร้างอนุภาคในการติดตั้ง
local emitter = Instance.new("ParticleEmitter")
emitter.Rate = 5
emitter.Lifetime = NumberRange.new(1.5, 1.5)
emitter.Texture = "rbxassetid://1266170131"
emitter.Speed = NumberRange.new(1, 1)
emitter.Size = NumberSequence.new{NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(1, 6)}
emitter.Transparency = NumberSequence.new{NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(0.25, 0), NumberSequenceKeypoint.new(1, 1)}
emitter.Orientation = Enum.ParticleOrientation.VelocityPerpendicular
emitter.Parent = attachment
-- สร้างเสียงในการติดตั้ง
local sound = Instance.new("Sound")
sound.SoundId = "rbxassetid://1835405646"
sound.Parent = attachment
-- เล่นเสียง
sound:Play()
-- เริ่มต้นตรวจสอบว่าเครื่องสร้างอนุภาคควรเปิดหรือไม่
RunService.Heartbeat:Connect(function()
-- เปิดเครื่องสร้างอนุภาคในระยะเสียง; มิฉะนั้นให้ปิด
emitter.Enabled = sound.TimePosition >= 5 and sound.TimePosition < 20
end)
Looped
คุณสมบัติ Looped ช่วยให้คุณทำซ้ำเสียงหลังจากที่มันเล่นจบ เมื่อเปิดเป็น true เสียงของวัตถุ Sound จะเล่นอีกครั้ง นี่มีประโยชน์ในการใช้สำหรับ เสียงพื้นหลัง เพื่อให้แน่ใจว่าประสบการณ์ของคุณไม่มีช่วงเวลาที่เงียบอย่างกะทันหัน
สคริปต์วัตถุเสียง
เล่นเสียงตามบริบท
นอกจากการเล่นเสียงอัตโนมัติผ่านคุณสมบัติ Playing ของวัตถุ Sound คุณสามารถเล่นเสียงตามบริบทจาก LocalScript โดยเรียกใช้ Play() บนวัตถุ Sound ที่เกี่ยวข้อง ตัวอย่างเช่น:
local Workspace = game:GetService("Workspace")local sound = Instance.new("Sound")sound.SoundId = "rbxassetid://9120386436"sound.Looped = truesound.Parent = Workspacesound:Play()
อีกวิธีหนึ่ง ถ้าสถานที่จะมีหลายเพลง คุณสามารถเล่นเพลงเฉพาะจาก LocalScript:
local SoundService = game:GetService("SoundService")local musicTrack = SoundService:FindFirstChild("LucidDream")if not musicTrack.IsPlaying thenmusicTrack:Play()end
เล่นเสียงส่วนติดต่อ
คุณสามารถเล่นเสียงส่วนติดต่อสำหรับ GuiObjects เช่น ปุ่ม โดยการเชื่อมต่อวัตถุ Sound เข้ากับตัวฟังเหตุการณ์ Activated นี่ช่วยให้คุณให้ข้อเสนอแนะแบบเสียงแก่ผู้ใช้ เช่น เมื่อพวกเขาเลื่อนเมาส์ไปหรือกดปุ่ม
เพื่อเล่นเสียงวัตถุ Sound เมื่อผู้ใช้เปิดการใช้งาน TextButton หรือ ImageButton:
- ในหน้าต่าง Explorer ให้เคอร์เซอร์ไปเหนือ TextButton หรือ ImageButton แล้วคลิกที่ปุ่ม ⊕ เมนูบริบทจะปรากฏขึ้น
- วางโค้ดต่อไปนี้ลงในสคริปต์ แล้วแทนที่ SOUND_NAME ด้วยชื่อของวัตถุ Sound ที่ตั้งอยู่ภายในคอนเทนเนอร์ SoundService
local SoundService = game:GetService("SoundService")
local button = script.Parent
local sound = SoundService:FindFirstChild("SOUND_NAME")
if not sound.isLoaded then
sound.Loaded:Wait()
end
local function onButtonActivated()
if sound and not sound.IsPlaying then
sound:Play()
end
end
button.Activated:Connect(onButtonActivated)