Unity에서 3D 사운드 구현하기

김보근·2025년 6월 23일

Unity

목록 보기
108/113

Unity에서 3D 사운드 구현하기

오늘은 FPS 게임처럼 방향이나 거리감에 따라 소리가 달라지는 3D 사운드를 Unity에서 구현해봤다.

👂 목표

플레이어가 소리에 가까워지면 소리가 커지고, 멀어지면 작아지도록 만들기

왼쪽/오른쪽 등 소리의 방향성을 적용하기

🎧 구현 방식 요약

유니티에서는 기본적으로 3D 사운드를 구현할 수 있는 기능을 제공한다.
핵심은 AudioSource + AudioListener + Spatial Blend(3D) 세 가지다.

✅ AudioListener

말 그대로 "귀" 역할을 하는 컴포넌트

일반적으로 플레이어의 카메라에 붙어있음

✅ AudioSource

사운드를 발생시키는 컴포넌트

소리를 내고 싶은 오브젝트에 붙임 (ex. 적, 총 등)

Spatial Blend 값을 1 (3D) 로 설정하면 위치 기반 사운드가 된다

플레이어 설정

사운드큐브 설정

🔧 구현 예시

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SoundTest : MonoBehaviour
{
    public AudioClip growlClip;

    private AudioSource audioSource;
    private void Awake()
    {
        audioSource = GetComponent<AudioSource>();
    }
    void Start()
    {
        audioSource.clip = growlClip;

        audioSource.spatialBlend = 1.0f; // 3D 사운드
        audioSource.minDistance = 1.0f;
        audioSource.maxDistance = 15f;
        audioSource.rolloffMode = AudioRolloffMode.Logarithmic;

        audioSource.Play();
    }

    
}

🎯 세부 설정

Spatial Blend:

  • 0이면 2D 사운드, 1이면 3D 사운드

  • 방향/거리 등에 따라 소리의 감쇠 및 방향성 적용됨

Min Distance / Max Distance:

  • Min Distance보다 가까우면 최대 볼륨

  • Max Distance보다 멀면 거의 안 들림

Rolloff Mode:

  • 감쇠 방식. Logarithmic이 가장 자연스러움

🔍 테스트 결과

  • 소리 나는 오브젝트에 가까이 가면 점점 커지고,

  • 멀어질수록 작아지는 게 확실히 느껴짐

  • 이어폰으로 들으면 방향감도 정확하게 느껴짐 (왼쪽/오른쪽 구분됨)

💡 느낀 점

처음에는 복잡할 줄 알았는데, 생각보다 간단하게 구현됐다.
Spatial Blend 하나만 바꿔줘도 꽤 현실감 있는 공간 사운드를 만들 수 있었다.
나중에 실내/실외 구분을 위한 Reverb Zone이나 벽 뒤에 있을 때 소리를 줄이는 Occlusion 기능도 추가해보고 싶다.

profile
게임개발자꿈나무

0개의 댓글