본문 바로가기

로블록스 개발 중급

배경음악 플레이하기

로블록스내에서 음악은 Sound 객체를 사용하여 플레이할 수 있다. 크게 배경에 깔리는 음악, 주변음, 플레이어의 행동에 따른 사운드가 있다. 배경에 전체적으로 깔리는 배경음악은 어느 플레이어든지 다 같이 듣게 되는 음악이다. 주변음은 공장소리나 폭포수처럼 가까이 가면 들리는 소리, 플레이어의 행동에 따른 사운드는 걷는 소리, 장전 소리, 아이템 줍는 소리등이 있을 수 있다. 

여기서는 전체 플레이어가 공통으로 듣는 배경음악에 대해 알아본다. 

음악 찾기

자신이 필요한 음악을 로블록스에 직접 업로드해서 사용할 수도 있고, 마켓플레이스에서 사용할 수 있는 음악을 직접 구입(Free도 많다)할 수도 있다. 

음악 업로드하기

음악을 직접 로블록스에 업로드하는 방식은 안타깝게 로블록스에 로벅스(로블록스의 가상화폐)가 아주 쬐금 필요하다. 거의 공짜이긴 한데... 어쨋든 지불하지 않으면 음악을 업로드할 수 없다. 약간의 지불을 통해 자신만의 배경음악을 사용하고 싶다면 업로드해보자.

해당 링크 Create Audio 타고 페이지를 열어보면 음악을 업로드할 수 있는 페이지가 나온다. 음악을 올리고 나면 자신의 음악 리스트가 나오는데 원하는 음악을 선택하면 나오는 URL에서 숫자가 음악의 ID가 된다. 그 ID를 복사하면 사용할 수 있다.

https://www.roblox.com/library/1837849285/Night-Vision

마켓플레이스에서 음악 찾기

Toolbox 에서 Marketplace 탭을 선택하고 Audio 를 선택한다.

 

ROBLOX가 제공하는 음악을 찾아보자. 그냥 찾기로는 너무 많은 것이 검색되서 찾기 힘들고, 아래 이미지처름 조건 검색 아이콘을 클릭하여 Creator를 ROBLOX를 입력하면 ROBLOX가 제공하는 음악들이 나오게 된다.

 

사운드 아이콘의 오른쪽 아래의 작은 회색 플레이버튼을 누르면 미리듣기가 가능하니 원하는 음악을 찾아보자.

원하는 음악을 찾으면 아이콘을 클릭! 이 아니라 오른쪽 마우스 버튼을 눌러서 Copy Asset ID를 선택한다. 해당 오디오의 아이디를 얻어 오는 것인데, 그냥 클릭을 하면 탐색기창에서 선택된 객체에 그냥 추가가 되어 버린다. 자신도 모르게 사운드 객체가 추가되지 않게 조심.

음악 플레이

위에서 카피한 아이디는 사운드 객체를 추가한 뒤에 사용된다. 

사운드 객체 셋업

사운드 객체를 만약에 파트나 모델에 자식으로 추가했다면 그 파트의 위치에서 사운드가 출력된다. 속성 설정에 따라서 해당 파트에 가까이 가야만 소리가 출력된다는 말이다. 게임내의 모든 플레이어에게 같은 볼륨으로 플레이하고 싶다면 SoundService 를 사용하면 된다. 그래서 배경음악들은 SoundService에 추가해 놓는게 좋은 방법이다.

SoundServiceSound 객체를 추가하고 BackgroundMusic 이라고 이름을 바꾼다.

 

사운드객체의 SoundId 속성에 위에서 카피한 사운드의 ID를 입력한다.

 

테스트할 수 있는 사운드 ID리스트로 테스트해보자.

  • rbxassetid://1843463175
  • rbxassetid://1837849285
  • rbxassetid://1848183670

입력한 ID로 프리뷰로 들어볼 수 있다.

사운드 객체 플레이

사운드 객체는 위의 예처럼 사운드서비스에 직접 등록할 수 있지만, 스크립트에서 사운드 객체를 생성하고 플레이까지 할 수 있다. 일반적인 경우라면, 사운드 객체를 생성하고 사운드서비스에 연결하는 스크립트를 사용하는 방법을 많이 사용할 것이다.

StarterPlayer 안에 StarterPlayerScripts 에 로컬 스크립트로 배경음악관련 스크립트를 추가하자. 배경음악 플레이관련은 굳이 서버스크립트를 사용할 이유가 없다. 스크립트 내에서 사운드 서비스를 불러오고 사운드 서비스의  BackgroundMusic 객체를 불러오자.

local SoundService = game:GetService("SoundService")
local backgroundMusic = SoundService.BackgroundMusic

BackgroundMusic 객체의 Play() 함수를 호출하면 배경음악이 플레이된다.

local SoundService = game:GetService("SoundService")
local backgroundMusic = SoundService.BackgroundMusic
 
backgroundMusic:Play()

BackgroundMusic 객체는 본질적으로 사운드 객체이다. 사운드객체를 직접 생성하여 플레이시킬 수도 있다.

local SoundService = game:GetService("SoundService")

local soundObject = Instance.new("Sound")
soundObject.SoundId = 사용할 사운드의 아이디
soundObject.Volume = 0.5
soundObject.Parent = SoundService

soundObject:Play()

사운드 객체의 속성

Looped 속성 : 사운드 플레이를 반복 재생

 

Volume 속성 : 사운드의 볼륨 조정.

여러 배경음악 반복 재생하기

아래의 스크립트는 세개의 사운드를 무한 반복 재생하는 내용이다. 내용의 해석을 주석을 확인하자.

local SoundService = game:GetService("SoundService")

-- 반복 재생될 사운드 아이디 리스트
local songs = {
    "rbxassetid://1837467590",
    "rbxassetid://1845348751",
    "rbxassetid://1839923818",
}

-- 반복 재생될 사운드 객체의 리스트
local soundObjects = {}
for _, songID in ipairs(songs) do
    local soundObject = Instance.new("Sound")
    soundObject.SoundId = songID
    soundObject.Volume = 0.2
    soundObject.Parent = SoundService
    table.insert(soundObjects, soundObject)
end

-- 무한 반복
while true do
    -- 리스트의 배경음악을 차례로 플레이
    for currentSongIndex = 1, #soundObjects do
        -- 인덱스로 사운드 객체 얻기
        local currentSongObject = soundObjects[currentSongIndex]
        -- 플레이
        currentSongObject:Play()
        -- 사운드 플레이 완료 이벤트가 나올때까지 기다림.
        currentSongObject.Ended:Wait()
	end
end