Âm thanh được phát qua các đối tượng Sound phát âm thanh trong một trải nghiệm. Roblox gán cho mỗi tài sản âm thanh một ID duy nhất mà bạn có thể gán cho các đối tượng Sound để phát một hiệu ứng âm thanh hoặc bản nhạc cụ thể. Bạn có thể đặt âm thanh này để phát tự động khi chạy, hoặc kích hoạt nó để phát từ script.
Để sửa đổi việc phát nhiều đối tượng Sound, bạn có thể gán chúng vào một nhóm âm thanh và kiểm soát âm lượng toàn bộ nhóm, cũng như áp dụng các hiệu ứng động.
Tạo các đối tượng âm thanh
Có ba vị trí mà bạn có thể tạo một đối tượng Sound, và mỗi vị trí xác định cách âm thanh phát ra và âm lượng thay đổi liên quan đến vị trí của người dùng trong trải nghiệm.
| Vị trí | Cách âm thanh phát ra | Cách âm lượng thay đổi |
|---|---|---|
| Con của một khối, hình cầu, hoặc hình trụ BasePart. | Âm thanh phát ra từ toàn bộ bề mặt của phần. | Âm lượng thay đổi tùy thuộc vào khoảng cách giữa người dùng và vị trí của phần, cũng như kích thước của nó. |
| Con của một Attachment, MeshPart, TrussPart, WedgePart, hoặc CornerWedgePart. | Âm thanh phát ra từ điểm gắn kết hoặc trung tâm của phần duy nhất. | Âm lượng thay đổi tùy thuộc vào khoảng cách giữa người dùng và vị trí gắn kết/phần. |
| Trong SoundService hoặc Workspace. | Âm thanh phát ra trên toàn bộ trải nghiệm. | Âm lượng và vị trí panning vẫn giữ nguyên bất kể vị trí hoặc góc quay của người dùng. |
Âm thanh vị trí
Âm thanh vị trí là âm thanh mà người dùng chỉ có thể nghe gần một vị trí cụ thể trong trải nghiệm. Có hai loại âm thanh vị trí mà bạn có thể sử dụng: âm thanh thể tích và nguồn điểm.
Âm thanh thể tích
Âm thanh thể tích là tùy chọn âm thanh thực tế nhất, vì nó thay đổi động tùy thuộc vào vị trí của người dùng so với nguồn âm thanh. Ví dụ, nếu người dùng ở trong một BasePart với một đối tượng Sound con, âm thanh phát xung quanh người dùng, tương tự như âm nhạc trong tai nghe phát cùng một âm lượng ở mỗi loa. Khi người dùng rời khỏi phần, âm thanh giảm dần âm lượng và trở nên định hướng hơn theo mỗi loa, di chuyển xung quanh đầu của người dùng khi thính giác của họ quay. Để biết thông tin về các thuộc tính kiểm soát âm thanh của bạn lớn như thế nào ở các khoảng cách khác nhau từ phần, xem RollOffMinDistance và RollOffMaxDistance.
Kích thước của BasePart cũng ảnh hưởng đến âm lượng của âm thanh, vì các BaseParts lớn hơn tạo ra một khu vực rộng hơn mà người dùng có thể nghe âm thanh, và khi người dùng di chuyển ra xa một BasePart lớn, âm lượng giảm dần chậm hơn. Ví dụ sau hiển thị một BasePart có kích thước của một thành phố với một đối tượng Sound phát âm thanh môi trường. Người dùng A và B trải nghiệm âm thanh khác nhau: người dùng B gần hơn với BasePart lớn, và họ chủ yếu nghe âm thanh với độ lớn gần như nhau ở cả hai loa. Ngược lại, người dùng A cách xa thành phố hơn, vì vậy âm thanh họ nghe nhỏ hơn và định hướng hơn so với người dùng B, phát ra với độ lớn khác nhau ở mỗi loa của họ.

Âm thanh thể tích rất hữu ích cho bất kỳ âm thanh nào cần trở nên sống động quanh người dùng và thay đổi động tùy thuộc vào vị trí của người dùng, chẳng hạn như một sân khấu concert hoặc các vùng âm thanh như mưa. Khi bạn thử nghiệm với việc đặt một đối tượng Sound trên các BaseParts có kích thước và vị trí khác nhau so với người dùng, bạn có thể nghe được sự sống động của âm thanh thể tích.
Để tạo một đối tượng Sound cho âm thanh thể tích:
Trong cửa sổ Explorer, chọn SoundService.
Trong cửa sổ Properties, điều hướng đến thuộc tính VolumetricAudio, rồi đặt nó thành Enabled.
Trong cửa sổ Explorer, di chuột qua một BasePart, rồi nhấn vào nút ⊕. Một menu ngữ cảnh sẽ hiển thị.
Từ menu, chèn một Sound.
Trong cửa sổ Properties, điều hướng đến thuộc tính SoundId và nhập một ID tài sản âm thanh hợp lệ.

(Tùy chọn) Nếu bạn muốn âm thanh bắt đầu phát khi trải nghiệm bắt đầu, hãy bật thuộc tính Playing.
Nguồn điểm
Ngược lại với âm thanh thể tích, âm thanh nguồn điểm chỉ phát ra từ một nguồn điểm duy nhất. Loại âm thanh này hữu ích cho các vụ nổ, tiếng va chạm, thiết bị điện tử và đối thoại.
Để tạo một đối tượng Sound cho âm thanh nguồn điểm:
- Trong cửa sổ Explorer, di chuột qua một gắn kết, giàn, mảnh wedge hoặc góc wedge, rồi nhấn vào nút ⊕. Một menu ngữ cảnh sẽ hiển thị.
- Từ menu, chèn một Sound.
- (Tùy chọn) Nếu bạn muốn âm thanh bắt đầu phát khi trải nghiệm bắt đầu, hãy bật thuộc tính Playing.
Âm thanh nền
Âm thanh nền phát ra với cùng một âm lượng bất kể người dùng di chuyển đến đâu trong trải nghiệm của bạn. Loại âm thanh này hữu ích cho âm nhạc mà bạn muốn phát cho người dùng, đặc biệt khi bạn muốn tạo một bản nhạc của nhiều tệp âm thanh.
Tốt nhất là giữ tất cả các đối tượng Sound cho âm thanh nền ở một vị trí duy nhất trong Workspace để thuận tiện quản lý khi bạn tiếp tục thêm và chỉnh sửa âm thanh trong trải nghiệm của mình. Ví dụ sau lưu trữ đối tượng Sound mới dưới chứa SoundService, vì dịch vụ này quyết định cách mà các đối tượng Sound phát trong các trải nghiệm.
Để tạo một đối tượng Sound cho âm thanh nền:
- Trong cửa sổ Explorer, di chuột qua SoundService, rồi nhấn vào nút ⊕. Một menu ngữ cảnh sẽ hiển thị.
- Từ menu, chèn một Sound.
- (Tùy chọn) Nếu bạn muốn âm thanh bắt đầu phát khi trải nghiệm bắt đầu, hãy bật thuộc tính Playing.
- (Tùy chọn) Nếu đối tượng Sound này là bản nhạc duy nhất bạn muốn phát trong nơi này, hãy bật thuộc tính Looped của nó.
Tùy chỉnh các đối tượng âm thanh
Các thuộc tính của đối tượng Sound làm việc cùng nhau để ảnh hưởng đến cách người dùng trải nghiệm âm thanh của bạn, chẳng hạn như:
- Âm thanh mà họ nghe được mức độ lớn riêng lẻ và liên quan đến nhau (Âm lượng).
- Cách họ cảm nhận âm lượng khi họ di chuyển ra xa nguồn âm thanh (RollOffMinDistance, RollOffMaxDistance, và RollOffMode)
- Phần nào của âm thanh họ có thể nghe (TimePosition).
- Tốc độ và âm cao mà họ nghe (PlaybackSpeed).
- Âm thanh có tự động phát lại sau khi hoàn thành (Looped).
Âm lượng
Thuộc tính Volume cho phép bạn đặt âm lượng âm thanh của bạn từ 0 (im lặng) đến 10 (vang dội). Nếu bạn muốn thay đổi âm lượng của nhiều đối tượng Sound cùng một lúc, hãy đặt chúng dưới một nhóm âm thanh.
RollOffMinDistance và RollOffMaxDistance
RollOffMinDistance và RollOffMaxDistance xác định khoảng cách mà người dùng cảm nhận âm lượng từ âm thanh vị trí. Đối với âm thanh thể tích, RollOffMinDistance là khoảng cách tối thiểu tính bằng studs mà âm thanh bắt đầu giảm âm lượng khi thính giác của client di chuyển ra xa khỏi phần BasePart đó, và thuộc tính RollOffMaxDistance là khoảng cách tối đa tính bằng studs mà thính giác của client có thể nghe âm thanh từ bề mặt của đối tượng.

Đối với âm thanh nguồn điểm, RollOffMinDistance và RollOffMaxDistance hoạt động tương tự như âm thanh thể tích, nhưng khoảng cách giảm âm thanh mà các thuộc tính này kiểm soát không bao quanh đối tượng, nó chỉ ảnh hưởng đến khoảng cách ra xa từ nguồn điểm.

RollOffMode
Thuộc tính RollOffMode cho phép bạn quyết định cách mà âm thanh giảm dần khi khoảng cách giữa thính giác của người dùng và cha của đối tượng Sound tăng lên. Bạn có thể đặt thuộc tính này thành một trong bốn giá trị của enum Enum.RollOffMode.

| RollOffMode | Mô tả |
|---|---|
| Inverse (mặc định) | Âm lượng ban đầu giảm đột ngột từ RollOffMinDistance, nhưng việc giảm âm lượng trở nên dần dần hơn khi gần đến RollOffMaxDistance. Khi họ đến RollOffMaxDistance, âm thanh sẽ im lặng. |
| Linear | Âm lượng giảm dần theo cách tuyến tính giữa RollOffMinDistance và RollOffMaxDistance. Khi người dùng đến RollOffMaxDistance, âm thanh sẽ im lặng. |
| InverseTapered | Âm lượng theo mô hình nghịch đảo khi gần với RollOffMinDistance và mô hình bình phương tuyến tính khi người dùng gần với RollOffMaxDistance. Âm thanh tiến gần đến im lặng tại điểm khoảng cách tối đa. |
| LinearSquare | Âm lượng giảm dần giữa RollOffMinDistance và RollOffMaxDistance với một mối quan hệ bình phương tuyến tính. Âm thanh tiến gần đến im lặng tại điểm khoảng cách tối đa. |
PlaybackSpeed
Thuộc tính PlaybackSpeed cho phép bạn xác định tốc độ phát âm thanh của bạn. Ví dụ, nếu bạn đặt PlaybackSpeed thành một giá trị 2, âm thanh của bạn phát nhanh gấp đôi và một octave cao hơn. Tương tự, nếu bạn đặt thành giá trị 0.5, âm thanh của bạn phát chậm gấp đôi và một octave thấp hơn.
| PlaybackSpeed = 0.5 | PlaybackSpeed = 1.0 | PlaybackSpeed = 2.0 |
TimePosition
Thuộc tính TimePosition hiển thị, tính bằng giây, vị trí mà người dùng hiện tại đang nghe trong mẫu âm thanh. Thuộc tính này hữu ích cho việc chỉ phát một phần của mẫu âm thanh, hoặc kích hoạt một sự kiện xảy ra khi âm thanh đạt đến một vị trí cụ thể. Ví dụ, mẫu code sau gây ra một phát sáng hạt phát ra một hạt vòng trắng phía trên một phần trong một khoảng thời gian giới hạn của một bản nhạc âm thanh.
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
-- Tạo một phần mới
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
-- Tạo một gắn kết trên phần
local attachment = Instance.new("Attachment")
attachment.Position = Vector3.new(0, 0.5, 0)
attachment.Parent = part
-- Tạo một phát sáng hạt trên gắn kết
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
-- Tạo một âm thanh trên gắn kết
local sound = Instance.new("Sound")
sound.SoundId = "rbxassetid://1835405646"
sound.Parent = attachment
-- Phát âm thanh
sound:Play()
-- Bắt đầu kiểm tra xem phát sáng hạt có nên được kích hoạt
RunService.Heartbeat:Connect(function()
-- Kích hoạt phát sáng hạt trong khoảng thời gian âm thanh; ngược lại hãy tắt nó
emitter.Enabled = sound.TimePosition >= 5 and sound.TimePosition < 20
end)
Looped
Thuộc tính Looped cho phép bạn lặp lại âm thanh sau khi nó đã phát xong. Khi đặt thành true, âm thanh của đối tượng Sound sẽ phát lại. Điều này hữu ích để áp dụng cho âm thanh nền để đảm bảo trải nghiệm của bạn không bị im lặng đột ngột.
Đối tượng âm thanh kịch bản
Phát âm thanh theo ngữ cảnh
Ngoài việc phát âm thanh tự động thông qua thuộc tính Playing của đối tượng Sound, bạn có thể phát âm thanh theo ngữ cảnh từ một LocalScript bằng cách gọi Play() trên đối tượng Sound tương ứng. Ví dụ:
local Workspace = game:GetService("Workspace")local sound = Instance.new("Sound")sound.SoundId = "rbxassetid://9120386436"sound.Looped = truesound.Parent = Workspacesound:Play()
Ngoài ra, nếu địa điểm sẽ có nhiều bản nhạc, bạn có thể phát một bản nhạc cụ thể từ một LocalScript:
local SoundService = game:GetService("SoundService")local musicTrack = SoundService:FindFirstChild("LucidDream")if musicTrack and not musicTrack.IsPlaying thenmusicTrack:Play()end
Phát âm thanh giao diện
Bạn có thể phát âm thanh giao diện cho các GuiObjects như nút bằng cách liên kết một đối tượng Sound với sự kiện lắng nghe Activated. Điều này cho phép bạn cung cấp phản hồi âm thanh cho người dùng, chẳng hạn như khi họ di chuột qua hoặc nhấn nó.
Để phát âm thanh của một đối tượng Sound khi người dùng kích hoạt một TextButton hoặc ImageButton:
- Trong cửa sổ Explorer, di chuột qua TextButton hoặc ImageButton, rồi nhấn vào nút ⊕. Một menu ngữ cảnh sẽ hiển thị.
- Dán mã sau vào trong script, rồi thay thế SOUND_NAME bằng tên của một đối tượng Sound nằm trong chứa 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)