SoundService
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
Một dịch vụ xác định các khía cạnh khác nhau của cách Sounds chơi trong trải nghiệm. SoundService cũng thường được sử dụng để lưu trữ SoundGroups , mặc dù điều này không bắt buộc cho các nhóm hoạt động.
SoundService các thuộc tính như AmbientReverb , DistanceFactor , DopplerScale và RolloffScale có thể được sử dụng để thay đổi cách tất cả Sounds chơi trong trải nghiệm, và chức năng SetListener() cho phép bạn đặt vị trí từ nơi âm thanh được nghe.
Mẫu mã
The code in this sample, when ran from a LocalScript, will change the SoundService.AmbientReverb property of SoundService when the player is inside a BasePart tagged using CollectionService.
To add or remove tags and reverb types, change the entries in the 'reverbTags' table.
local Players = game:GetService("Players")
local CollectionService = game:GetService("CollectionService")
local SoundService = game:GetService("SoundService")
local localPlayer = Players.LocalPlayer
local reverbTags = {
["reverb_Cave"] = Enum.ReverbType.Cave,
}
-- collect parts and group them by tag
local parts = {}
for reverbTag, reverbType in pairs(reverbTags) do
for _, part in pairs(CollectionService:GetTagged(reverbTag)) do
parts[part] = reverbType
end
end
-- function to check if a position is within a part's extents
local function positionInPart(part, position)
local extents = part.Size / 2
local offset = part.CFrame:PointToObjectSpace(position)
return offset.x < extents.x and offset.y < extents.y and offset.z < extents.z
end
local reverbType = SoundService.AmbientReverb
while true do
task.wait()
if not localPlayer then
return
end
local character = localPlayer.Character
-- default to no reverb
local newReverbType = Enum.ReverbType.NoReverb
if character and character.PrimaryPart then
local position = character.PrimaryPart.Position
-- go through all the indexed parts
for part, type in pairs(parts) do
-- see if the character is within them
if positionInPart(part, position) then
-- if so, pick that reverb type
newReverbType = type
break
end
end
end
-- set the reverb type if it has changed
if newReverbType ~= reverbType then
SoundService.AmbientReverb = newReverbType
reverbType = newReverbType
end
end
Tóm Tắt
Thuộc Tính
Cài đặt môi trường âm thanh xung quanh được sử dụng bởi SoundService .
Xác định nơi (nếu có bất cứ nơi nào) để đặt một AudioListener mặc định.
Số đinh tán được coi là một mét bởi SoundService khi tính giảm âm lượng của Sounds cha sang một BasePart hoặc Attachment .
Mức độ mà độ dốc của một Sound thay đổi do hiệu ứng Doppler.
Bộ đặt xem có Sound phát lại từ một khách hàng sẽ sao chép lên máy chủ.
Thiết lập tốc độ giảm âm lượng Sound nhanh như thế nào.
Phương Pháp
Trả về loại người lắng nghe hiện tại SoundService và những gì được đặt là người lắng nghe.
Chơi một Sound địa phương, có nghĩa là âm thanh chỉ được nghe bởi khách hàng gọi phương pháp này, bất kể nó được gán cho đâu.
Thiết lập người lắng nghe cho SoundService .
Thuộc Tính
AmbientReverb
Mỗi Enum.ReverbType cho tài sản này tương ứng với một cấu hình có sẵn trong động cơ âm thanh FMOD.Ví dụ, khi AmbientReverb được đặt thành Enum.ReverbType.Hangar , âm thanh sẽ vang lên khác nhau để mô phỏng đang ở trong một không gian kín lớn.
Thay đổi AmbientReverb ảnh hưởng đến các thuộc tính sau đây được sử dụng bởi động cơ âm thanh của Roblox
- Thời gian suy giảm âm thanh.
- Thời gian trì hoãn phản ánh ban đầu.
- Thời gian trễ vang muộn so với thời gian phản chiếu ban đầu.
- Tham chiếu tần số cao.
- Tỷ lệ thời gian suy giảm tần số cao đến trung bình.
- Giá trị kiểm soát mật độ tiếng vang trong sự suy giảm tiếng vang cuối cùng.
- Giá trị kiểm soát mật độ modal trong sự suy giảm âm thanh cuối cùng.
- Tham chiếu tần số thấp.
- Cấp độ hiệu ứng phòng tương đối ở tần số thấp.
- Cấp độ hiệu ứng phòng tương đối ở tần số cao.
- Cấp phản ánh sớm so với hiệu ứng phòng.
- Cấp độ hiệu ứng phòng ở tần số giữa.
CharacterSoundsUseNewApi
DefaultListenerLocation
Xác định nơi để đặt một AudioListener mặc định. Xem Enum.ListenerLocation để có mô tả chi tiết về từng lựa chọn.
DistanceFactor
Số đinh tán được coi là một mét bởi SoundService khi tính giảm âm lượng của Sounds cha sang một BasePart hoặc Attachment .
Mặc định, thuộc tính này là 3.33 , có nghĩa là một khối được coi là 3.33 đinh tán cho mục đích giảm âm lượng.Càng lớn hơn DistanceFactor , âm thanh sẽ giảm dần càng nhiều.
Khuyến nghị bạn chỉ thay đổi thuộc tính này nếu trải nghiệm của bạn sử dụng thước đo khác.Ví dụ, khi sử dụng các nhân vật tùy chỉnh lớn hơn, bạn có thể muốn giảm DistanceFactor .
DopplerScale
Thuộc tính này xác định độ mà độ dốc của một Sound biến đổi do hiệu ứng Doppler, một hiện tượng mà độ dốc của một âm thanh thay đổi khi nguồn và quan sát viên của âm thanh di chuyển xa hơn hoặc gần hơn với nhau.Chỉ ảnh hưởng đến Sounds những thứ là con của một BasePart hoặc Attachment .
Tăng giá trị này làm nổi bật tác động của hiệu ứng Doppler, trong khi giảm nó làm giảm nó.Mặc định, giá trị của thuộc tính này là 1 .
RespectFilteringEnabled
Tính chất này xác định xem phát lại Sound có được sao chép từ khách hàng sang máy chủ, và do đó từ máy chủ.Nói cách khác, khi một LocalScript gọi Play() và thuộc tính này là true , âm thanh sẽ chỉ được phát trên máy khách tương ứng.Nếu thuộc tính này là false , các khách hàng khác cũng sẽ nghe thấy âm thanh.
Mặc định là true , có nghĩa là bộ lọc được bật.
RolloffScale
Thiết lập tốc độ giảm âm lượng Sound nhanh như thế nào.Càng cao RolloffScale , âm lượng của một âm thanh sẽ giảm nhanh hơn khi khoảng cách giữa người lắng nghe và âm thanh tăng lên.
Lưu ý rằng thuộc tính này chỉ áp dụng cho Sounds người có thuộc tính RollOffMode được đặt thành Inverse (mặc định) hoặc InverseTapered .Linear và LinearSquare chế độ sử dụng một mô hình giảm thiểu khác không bị ảnh hưởng bởi tính chất này.Tính chất này cũng không có ảnh hưởng đến Sounds mà không phải là cha của một BasePart hoặc Attachment .
VolumetricAudio
Phương Pháp
GetListener
Phương pháp này trả về loại người lắng nghe hiện tại SoundService và những gì được đặt là người lắng nghe, có nghĩa là điểm mà âm thanh trong trải nghiệm được "nghe" bởi người chơi.Mặc định, người lắng nghe được đặt thành Workspace.CurrentCamera .Người lắng nghe có thể được thay đổi bằng cách sử dụng SetListener() .
Kết quả đầu tiên trả về là Enum.ListenerType và kết quả thứ hai phụ thuộc vào đánh máyđó:
<th>Mô tả</th></tr></thead><tbody><tr><td><code>Enum.ListenerType.Camera</code></td><td>Không trả lại một đối tượng người lắng nghe như <code>Class.Workspace.CurrentCamera|CurrentCamera</code> luôn được sử dụng.</td></tr><tr><td><code>Enum.ListenerType.CFrame</code></td><td>Trả về <code>Datatype.CFrame</code> được sử dụng trong <code>Class.SoundService:SetListener()|SetListener()</code> .</td></tr><tr><td><code>Enum.ListenerType.Vị trí ObjectPosition</code></td><td>Trả về <code>Lớp.BasePart</code> được sử dụng trong <code>Class.SoundService:SetListener()|SetListener()</code> .</td></tr><tr><td><code>Enum.ListenerType.ObjectCFrame</code></td><td>Trả về <code>Lớp.BasePart</code> được sử dụng trong <code>Class.SoundService:SetListener()|SetListener()</code> .</td></tr></tbody>
Loại người lắng nghe |
---|
Lợi Nhuận
Hiện tại Enum.ListenerType và những gì người lắng nghe đã được đặt vào. Người lắng nghe có thể là BasePart , một CFrame hoặc nil .
OpenAttenuationCurveEditor
Tham Số
Lợi Nhuận
OpenDirectionalCurveEditor
Tham Số
Lợi Nhuận
PlayLocalSound
Chơi một Sound địa phương, có nghĩa là âm thanh chỉ được nghe bởi khách hàng gọi phương pháp này, bất kể nó được gán cho đâu.Phương pháp này hữu ích nhất khi chơi một Sound địa phương trong khách hàng Studio, ví dụ trong một Script cho một Plugin .
Tham Số
Lợi Nhuận
SetListener
Đặt bộ nghe được sử dụng bởi khách hàng, có nghĩa là điểm mà âm thanh trong trải nghiệm được "nghe" bởi người chơi.Đối với Sounds bố mẹ đến một BasePart hoặc Attachment , người lắng nghe ảnh hưởng đến âm lượng và cân bằng trái/phải của một tiếng chơi.
Mặc định, người lắng nghe được đặt thành Workspace.CurrentCamera , nhưng một loạt các loại người lắng nghe khác nhau có thể được sử dụng.
Người lắng nghe có thể được truy xuất bằng cách sử dụng GetListener() .
Tham Số
The Enum.ListenerType của người lắng nghe.
Phụ thuộc vào Enum.ListenerType.Sử dụng một BasePart cho Enum.ListenerType.ObjectPosition hoặc Enum.ListenerType.ObjectCFrame , một CFrame cho Enum.ListenerType.CFrame , hoặc nil cho Enum.ListenerType.Camera.