Sound

개요

Sound 오브젝트는 게임 내에서 오디오를 재생하거나 음향 효과를 추가할 수 있는 핵심 요소입니다. World나 Part, UI 등에 연결하여 배경음악, 효과음, 음성 등 다양한 오디오 경험을 구현할 수 있습니다. 이를 통해 게임의 몰입감을 높이고 플레이어와의 상호작용을 풍부하게 만들 수 있습니다.

사용 방법

사운드 Id 설정

사운드를 재생하려면 사운드 오브젝트를 배치한 다음, 프로퍼티창에서 Sound Id를 설정해야 합니다.

Sound Id는 Asset Manager에서 오디오 에셋을 우클릭한 다음, Copy Asset ID to Clipboard를 클릭해서 복사할 수 있습니다. 복사한 Asset ID는 ovdrassetid://번호 형식으로 설정해야 합니다.

미리 듣기

Sound Id를 설정한 경우, Preview 버튼을 클릭하여 소리를 확인할 수 있습니다.

프로퍼티 구성

프로퍼티
설명

Playing

재생 여부

Looped

반복 여부

Volume

음량

Playback Regions Enabled

PlaybackRegion 속성 사용 여부

Playback Speed

사운드의 재생 속도

Time Position

사운드의 재생 위치(초 단위)

Sound Id

재생할 사운드 에셋 Id (ovdrassetid://번호 형식)

Loop Region

사운드의 특정 구간을 반복 재생 (ex : 5~10초 사이 반복)

Playback Region

사운드 재생 범위를 설정 (ex : 3초부터 8초까지만 재생)

Play on Remove

사운드 오브젝트가 제거될 때 자동으로 재생할지 여부

Sound Group

사운드가 속한 사운드 그룹을 설정

위치 기반 재생

위치 기반 재생을 사용하면 소리가 거리와 위치에 따라 자연스럽게 감쇠되도록 설정할 수 있습니다. 예를 들어, 특정 장소에서 들리는 빗소리나 거리에 따라 멀어지는 자동차의 엔진음 등을 사실적으로 표현할 수 있습니다. 이러한 설정은 게임 내에서 공간감과 몰입감을 높이는 데 효과적입니다.

위치 기반 재생은 Roll Off Max Distance와 Roll Off Min Distance 프로퍼티로 거리를 설정할 수 있으며, Roll Off Mode 프로퍼티로 감쇠 방식을 설정할 수 있습니다.

프로퍼티
설명

Roll Off Max Distance

소리가 들리는 최대 거리

Roll Off Min Distance

소리가 들리기 시작하는 최소 거리

Roll Off Mode

소리가 거리에 따라 감쇠되는 방식

  • Inverse : 거리에 반비례하여 소리가 감쇠

  • Linear : 선형적으로 감쇠

  • Linear Square : 거리 제곱에 비례하여 감쇠

  • Inverse Tapered : 가까운 거리에서의 감쇠를 완화

Roll Off Mode의 각 타입은 다음과 같이 활용할 수 있습니다.

  • Inverse : 폭발음 (플레이어가 멀리 있을수록 소리가 점차 약해짐)

  • Linear : 라디오에서 나오는 배경 음악 (거리에 따라 일정하게 소리가 감소)

  • Linear Square : 총기 발사음 (근거리에서 강렬, 원거리에서 급격히 소리가 감소)

  • Inverse Tapered : 바람 소리 (가까운 거리에서 서서히 소리가 감소)

스크립트 기능

Sound

활용 예시

게임 배경음

local Workspace = game:GetService("Workspace")
local GameBGM = Workspace.GameBGM

local function PlayGameBGM(isPlay)
    GameBGM.Playing = isPlay
end
GameStart(true)

KillPart 충돌 효과음

local Workspace = game:GetService("Workspace")
local Part = Workspace.Part

local function OnTouched(otherPart)
    local partParent = otherPart.Parent
    local humanoid = partParent:FindFirstChild("Humanoid")

    if humanoid then
        humanoid:TakeDamage(100)        
        
        local killSFX = Instance.new("Sound")
        killSFX.SoundId = "ovdrassetid://1234"		
        killSFX.Volume = 1
        killSFX.Parent = Part
        killSFX.Playing = true
    end
end
Part.Touched:Connect(OnTouched)

버튼 효과음

local Workspace = game:GetService("Workspace")
local ScreenGui = script.Parent
local ImageButton = ScreenGui.ImageButton

local function OnActivated()
    print("Activated!")
    
    local buttonSFX = Instance.new("Sound")
    buttonSFX.SoundId = "ovdrassetid://1234"	
    buttonSFX.Volume = 1
    buttonSFX.Parent = Workspace
    buttonSFX.Playing = true
end
ImageButton.Activated:Connect(OnActivated)

고급 활용

사운드 그룹

곧 지원될 예정입니다.

Last updated