오디오 재생은 경험 내에서 오디오를 발생시키는 Sound 객체를 통해 이루어집니다. Roblox는 각 오디오 자산에게 고유한 ID를 부여하며, 이 ID를 Sound 객체에 할당하여 특정 사운드 효과나 음악 트랙을 재생할 수 있습니다. 이 오디오를 런타임에서 자동으로 재생되도록 설정하거나 스크립트에서 재생하도록 트리거할 수 있습니다.
여러 Sound 객체의 재생을 수정하려면, 이를 사운드 그룹에 할당하고 전체 그룹의 볼륨을 제어하거나 다이나믹 효과를 적용할 수 있습니다.
사운드 객체 생성
Sound 객체를 생성할 수 있는 위치는 세 곳이며, 각 위치는 사용자가 경험 내에서 위치에 따라 오디오가 어떻게 발생하고 볼륨이 어떻게 변화하는지를 결정합니다.
| 위치 | 오디오 발생 방식 | 볼륨 변화 방식 |
|---|---|---|
| 블록, 구 또는 실린더 BasePart의 자식. | 오디오는 부품의 전체 표면에서 바깥쪽으로 발생합니다. | 볼륨은 사용자의 사운드 리스너와 부품의 위치 사이의 거리 및 크기에 따라 변화합니다. |
| Attachment, MeshPart, TrussPart, WedgePart, 또는 CornerWedgePart의 자식. | 오디오는 단일 부착 지점 또는 부품 중심에서 바깥쪽으로 발생합니다. | 볼륨은 사용자의 사운드 리스너와 부착 지점/부품 위치 사이의 거리에 따라 변화합니다. |
| SoundService 또는 Workspace 내. | 오디오는 경험 전반에 걸쳐 발생합니다. | 볼륨 및 패닝 위치는 사용자의 사운드 리스너 위치나 회전에 관계없이 동일하게 유지됩니다. |
위치 기반 오디오
위치 기반 오디오는 사용자가 경험 내의 특정 위치 근처에서만 들을 수 있는 오디오입니다. 활용할 수 있는 위치 기반 오디오의 두 가지 유형은 볼륨 메트릭과 포인트 소스입니다.
볼륨 메트릭
볼륨 메트릭 오디오는 사용자의 오디오 소스에 대한 위치에 따라 동적으로 변화하는 가장 현실적인 오디오 옵션입니다. 예를 들어, 사용자가 자식 Sound 객체가 있는 BasePart 내에 있을 경우, 오디오는 사용자를 둘러싸고 재생되며, 이는 각 스피커에서 동일한 볼륨으로 재생되는 헤드폰의 음악과 유사합니다. 사용자가 부품에서 나가면 오디오는 점진적으로 볼륨이 감소하고 스피커별로 더 방향성을 가집니다. 사용자의 리스너가 회전할 때 사용자의 머리 주위로 움직입니다. 오디오가 부품에서 다른 거리에서 얼마나 큰 소리로 재생될지를 제어하는 속성에 대한 정보는 RollOffMinDistance 및 RollOffMaxDistance를 참조하세요.
BasePart의 크기는 또한 오디오의 볼륨에 영향을 미치며, 더 큰 BaseParts는 사용자가 오디오를 들을 수 있는 더 넓은 영역을 생성하고, 사용자가 큰 BasePart에서 멀어지면 볼륨은 더 느리게 감소합니다. 다음 예시는 도시 크기의 BasePart가 있으며, 그 안에서 앰비언트 오디오를 재생하는 Sound 객체가 있습니다. 사용자 A와 B는 오디오를 다르게 경험합니다: 사용자 B는 큰 BasePart에 더 가까이 있으며, 그들은 거의 동일한 볼륨으로 양쪽 스피커에서 오디오를 듣습니다. 반대로, 사용자 A는 도시에서 더 멀어져 있기 때문에, 그들이 듣는 오디오가 사용자 B에 비해 더 조용하고 스피커마다 다른 볼륨으로 재생됩니다.

볼륨 메트릭 오디오는 사용자를 둘러싸고 몰입감 있게 들릴 필요가 있는 오디오에 유용하며, 사용자의 위치에 따라 동적으로 변화합니다. 예를 들어, 콘서트 무대나 비 오는 날의 앰비언스를 고려할 수 있습니다. 다양한 크기와 사용자의 위치에서 Sound 객체를 배치하는 것을 실험하면 볼륨 메트릭 오디오가 얼마나 몰입감 있는지 들을 수 있습니다.
볼륨 메트릭 오디오를 위한 Sound 객체를 생성하려면:
탐색기 창에서 SoundService를 선택합니다.
속성 창에서 VolumetricAudio 속성으로 이동한 후 Enabled로 설정합니다.
탐색기 창에서 BasePart 위에 마우스를 올리면 ⊕ 버튼을 클릭합니다. 맥락 메뉴가 표시됩니다.
메뉴에서 Sound를 삽입합니다.
속성 창에서 SoundId 속성으로 이동하고 유효한 오디오 자산 ID를 입력합니다.

(선택 사항) 경험이 시작될 때 오디오가 자동으로 재생되기를 원하면 Playing 속성을 활성화합니다.
포인트 소스
볼륨 메트릭 오디오와는 달리 포인트 소스 오디오는 단일 포인트 소스에서만 발생합니다. 이 유형의 오디오는 폭발, 충격 소음, 전자 장치 및 대화에 유용합니다.
포인트 소스 오디오용 Sound 객체를 생성하려면:
- 탐색기 창에서 부착물, 트러스, 쐐기 또는 모서리 쐐기 위에 마우스를 올리고 ⊕ 버튼을 클릭합니다. 맥락 메뉴가 표시됩니다.
- 메뉴에서 Sound를 삽입합니다.
- (선택 사항) 경험이 시작될 때 오디오가 자동으로 재생되기를 원하면 Playing 속성을 활성화합니다.
배경 오디오
배경 오디오는 사용자가 경험 내에서 이동하더라도 동일한 볼륨으로 재생됩니다. 이 유형의 오디오는 사용자에게 재생하고자 하는 음악에 유용하며, 특히 여러 오디오 파일의 사운드트랙을 만들고자 할 때 유용합니다.
모든 Sound 객체를 배경 오디오에 대해 단일 워크스페이스 위치에 유지하는 것이 좋으며, 이는 경험 내에서 오디오를 추가하고 편집하는 과정에서 정리 목적을 가지고 있습니다. 다음 예시는 새로운 Sound 객체를 SoundService 컨테이너 아래에 저장하며, 이 서비스는 Sound 객체가 경험에서 어떻게 재생되는지를 결정합니다.
배경 오디오를 위한 Sound 객체를 생성하려면:
- 탐색기 창에서 SoundService 위에 마우스를 올리면 ⊕ 버튼을 클릭합니다. 맥락 메뉴가 표시됩니다.
- 메뉴에서 Sound를 삽입합니다.
- (선택 사항) 경험이 시작될 때 오디오가 자동으로 재생되기를 원하면 Playing 속성을 활성화합니다.
사운드 객체 사용자 정의
Sound 객체 속성은 사용자가 오디오를 경험하는 방식에 영향을 미치는 다양한 기능을 가지고 있습니다. 예를 들면:
- 사용자가 특정 오디오를 개별적으로 그리고 서로에 대한 상대적으로 얼마나 크게 듣는지 (Volume).
- 사용자가 오디오의 어떤 부분을 들을 수 있는지 (TimePosition).
- 사용자가 얼마나 빠르고 어떤 음조로 듣는지 (PlaybackSpeed).
- 오디오가 완료된 후 자동으로 다시 재생되는지 (Looped).
볼륨
Volume 속성을 사용하면 오디오의 볼륨을 0(무음)에서 10(크게)까지 설정할 수 있습니다. 여러 Sound 객체의 볼륨을 동시에 변경하려면, 이를 사운드 그룹에 부모로 설정하세요.
RollOffMinDistance 및 RollOffMaxDistance
RollOffMinDistance와 RollOffMaxDistance는 사용자가 위치 기반 오디오에서 볼륨을 인식하는 범위를 결정합니다. 볼륨 메트릭 오디오의 경우, RollOffMinDistance는 클라이언트의 리스너가 부모 BasePart에서 멀어질 때 오디오 볼륨이 감소하기 시작하는 최소 거리(스터드)이고, RollOffMaxDistance 속성은 클라이언트의 리스너가 객체 표면에서 오디오를 들을 수 있는 최대 거리(스터드)입니다.

포인트 소스 오디오의 경우, 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 객체의 오디오가 다시 재생됩니다. 이는 배경 오디오에 적용해 경험에 갑작스러운 침묵이 없도록 할 때 유용합니다.
스크립트 사운드 객체
오디오 맥락적 재생
Sound 객체의 Playing 속성을 통해 오디오를 자동으로 재생하는 것 외에도, LocalScript에서 Play()를 호출하여 오디오를 맥락적으로 재생할 수 있습니다. 예를 들어:
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 이벤트 리스너에 연결하면 됩니다. 이는 사용자가 이를 호버하거나 누를 때 청각적 피드백을 제공할 수 있습니다.
사용자가 TextButton 또는 ImageButton을 활성화할 때 Sound 객체의 오디오를 재생하려면:
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)