소리 넣기
게임에 효과음이나 배경음을 넣으려면 소리 파일을 에셋으로 올리고, 소리를 낼 엔티티에 Sound 컴포넌트를 붙인 뒤 그 안의 슬롯에 파일을 연결합니다. 이 페이지는 게임이 시작될 때 소리를 내는 방법과, 물체가 부딪힐 때 소리를 내는 방법을 설명합니다.
이 페이지의 실측은 2026-10-29 oasisw.ai 에디터(판 표시 OasisW 7e2aa65, macOS Chrome)에서 충돌 판정 붙이기에서 쓴 프로젝트로 한 것입니다. Launch한 게임에서 슬롯의 재생 상태와 재생 횟수를 읽어 확인했고, 부딪힐 때 나는 소리는 귀로도 확인했습니다. 별도 표시가 없는 동작은 1회 확인했습니다.
시작하기 전에
- 소리 파일이 하나 필요합니다. 실측에는 0.35초짜리 짧은 효과음(
hit.wav)을 썼습니다. 소리 파일도 글꼴처럼 파일마다 사용 허락 조건이 다르므로, 공개할 게임에 넣어도 되는지 먼저 확인합니다. - 부딪힐 때 소리를 내는 방법은 충돌 이벤트 받기를 바탕으로 합니다. 소리를 낼 엔티티에 Collision과 Rigid Body가 붙어 있어야 합니다.
에디터에서 직접 하기
1. 소리 파일 올리기
ASSETS 오른쪽 위 Upload를 누르고 소리 파일을 고릅니다. 실측에서는 지금 열려 있는 폴더에 음표 아이콘의 hit.wav가 생겼습니다. 글꼴과 달리 폴더가 따로 생기지 않았습니다.
2. Sound 컴포넌트 붙이기
- HIERARCHY에서 소리를 낼 엔티티를 고릅니다. 실측에서는 떨어지는
Box를 골랐습니다. - + ADD COMPONENT → Audio → Sound를 누릅니다.
SOUND 칸이 붙고, 그 아래에 빈 슬롯 Slot 1이 하나 생깁니다. 슬롯의 Asset은 처음에 Empty입니다.
3. 슬롯에 소리 연결하기
- ASSETS의 소리 파일을 끌어 슬롯의 Asset에 놓습니다.
Empty가 파일 이름으로 바뀝니다. - 슬롯의 Name을 알아보기 쉬운 이름으로 바꿉니다. 스크립트에서 이 이름으로 소리를 고릅니다. 실측에서는
hit으로 바꿨습니다. - 게임이 시작되자마자 소리를 내려면 Auto Play를 켭니다. 배경음처럼 끝나면 처음부터 다시 틀려면 Loop도 켭니다.
Auto Play와 Loop를 켜고 Launch하자, 게임이 시작된 뒤 3초가 지나도 슬롯이 계속 재생 중이었고 소리 신호가 나오고 있었습니다. 두 칸을 끄면 게임 중에 저절로 소리가 나지 않습니다.
SOUND 칸의 주요 값
| 자리 | 칸 | 뜻 |
|---|---|---|
| 컴포넌트 전체 | Positional | 처음에 켜져 있습니다. 켜 두면 소리를 듣는 위치와 엔티티 사이의 거리에 따라 소리 크기가 달라집니다. 아래 "거리에 따른 크기" 참고 |
| Volume, Pitch | 컴포넌트에 담긴 모든 슬롯의 크기와 높낮이(처음 값 1) | |
| 슬롯마다 | Name | 스크립트에서 소리를 고를 때 쓰는 이름 |
| Asset | 재생할 소리 파일 | |
| Auto Play | 게임이 시작되면 저절로 재생 | |
| Loop | 끝나면 처음부터 다시 재생 | |
| Overlap | 재생 중에 다시 재생하라는 명령이 오면 겹쳐 재생할지 정합니다. 꺼져 있으면(처음 값) 앞 소리를 끊고 처음부터 다시 틉니다. 실측에서 0.08초 간격으로 두 번 재생하자 꺼짐은 동시에 1개, 켜짐은 동시에 2개가 재생 중이었습니다 |
거리에 따른 크기
Launch한 게임에서 같은 소리를 거리만 바꿔 틀고 출력 신호의 크기(최대값)를 읽었습니다(2026-10-29, 각 1회).
| 설정 | 1m | 10m | 100m(또는 19m) |
|---|---|---|---|
처음 값(Max Distance 10000, Linear) | 0.299 | 0.299 | 0.296(100m) |
Max Distance 20 | 0.299 | 0.157 | 0.016(19m) |
처음 값에서는 Max Distance가 10000미터라, 게임 안의 거리로는 소리 크기가 거의 줄지 않습니다. 멀어질수록 작아지게 하려면 Max Distance를 게임 크기에 맞게(예: 20) 줄입니다. Linear에서는 Ref Distance(1)까지는 그대로이고, Max Distance에서 거의 들리지 않게 됩니다.
새 씬의 카메라에는 Audio Listener가 없습니다. 위 실측은 Audio Listener 없이 원점(0, 0, 0)에서 떨어진 거리로 쟀습니다. 카메라나 캐릭터를 따라 듣게 하려면 그 엔티티에 + ADD COMPONENT → Audio → Audio Listener를 붙입니다. 실측에서 X 19에 Audio Listener를 붙인 엔티티를 두자, 같은 자리(X 19)의 소리는 0.423으로 크게, 원점의 소리는 0.016으로 작게 들렸습니다(Max Distance 20). 듣는 기준점이 Audio Listener로 옮겨 간 것입니다.
소리가 둘 이상이면 + ADD SLOT으로 슬롯을 더 만들고, 슬롯마다 다른 이름과 파일을 줍니다.
4. 부딪힐 때 소리 내기
원하는 때에 소리를 내려면 스크립트에서 슬롯 이름으로 재생합니다. 다음은 엔티티가 무언가에 부딪힐 때마다 hit 슬롯을 재생하는 스크립트입니다. 스크립트를 만들고 붙이는 법은 새 스크립트 만들고 붙이기에 있습니다.
var PlayHit = ow.createScript('playHit');
// 낼 소리의 슬롯 이름입니다
PlayHit.attributes.add('slotName', {
type: 'string',
default: 'hit',
description: 'SOUND 칸의 슬롯 이름'
});
PlayHit.prototype.initialize = function () {
this.entity.collision.on('collisionstart', this.onHit, this);
};
PlayHit.prototype.onHit = function () {
this.entity.sound.play(this.slotName);
};
- 이 스크립트(
playHit.js)를 Sound가 붙은 엔티티에 붙입니다. - SCRIPT 칸의 slotName이 3단계에서 정한 슬롯 이름과 같은지 봅니다. 다르면 소리가 나지 않습니다.
- 슬롯의 Auto Play와 Loop는 끕니다.
- ▶ Launch로 확인합니다.
실측에서 Box를 높이 4에서 떨어뜨리자, 바닥에 처음 닿을 때와 한 번 튀어 다시 닿을 때 두 번 소리가 재생되었습니다(2회 모두 2번). 튈 때마다 소리가 나는 것이 싫으면 on 대신 once로 처음 한 번만 받습니다. 차이는 충돌 이벤트 받기에 있습니다.
확인할 것
- 소리가 나지 않으면 먼저 기기 소리가 켜져 있는지, 슬롯의 Asset이
Empty가 아닌지, 스크립트의 슬롯 이름이 맞는지 봅니다. - 브라우저는 보통 사용자가 페이지를 한 번 누르기 전에는 소리를 막습니다. 실측 환경에서는 누르기 전에도 소리 신호가 나왔지만, 공개한 게임을 처음 연 사람에게도 그런지는 확인하지 않았습니다. 시작 화면에서 한 번 누르게 한 뒤 배경음을 트는 구성이 안전합니다. 작성 대기 공개 주소를 처음 연 브라우저에서 Auto Play 소리가 나는지 실측
AI에게 맡기기
요청 예:
ASSETS의 hit.wav를 써서, 상자가 바닥에 부딪힐 때마다 효과음을 내 줘.
소리는 상자의 Sound 컴포넌트 슬롯에 넣고, 슬롯 이름은 hit으로 해 줘.
요청한 것 외에는 손대지 마세요.
끝난 뒤 SOUND 칸의 슬롯과 스크립트의 슬롯 이름이 맞는지 보고, Launch로 소리를 들어 봅니다. 작성 대기 AI에게 맡기기 실측 — 같은 요청 3회