📖 학습 목표
- 유니티의 오디오 시스템에 대해 배웁니다.
- 오디오 리스너(Audio Listener)와 오디오 소스(Audio Source)를 익힙니다.
- 3D Sound와 2D Sound의 차이를 익힙니다.
📒 과정
0. Scene 열기
- 프로젝트 폴더 내 Scenes폴더 안에 있는 "5. Audio"을 엽니다.
1. Audio Listener
- 유니티에서 "오디오 리스너(Audio Listener)"는 씬에 배치되어 있는 오디오 소스(Audio Source)에서 재생되는 소리를 듣고 이것을 사용자에게 들려주는 역할을 합니다.
- 오디오 리스너는 기본적으로 씬에 배치되는 카메라(Main Camera) 오브젝트의 컴포넌트로 추가되어 있습니다.
- 기본적으로 오디오 리스너는 배치되어있기때문에 별도로 생성하지 않아도 됩니다.
- AudioListener는 두개 이상 씬에 존재할 수 있지만, 권장하지 않습니다.
- 특별하게 제어하지 않는 경우 일반적으로 하나만 존재하는 것이 좋습니다.
2. Audio Source
- 유니티(Unity)의 오디오 소스(Audio Source)는 게임 또는 인터랙티브 애플리케이션에서 사용되는 소리를 제어하기 위한 구성 요소입니다.
- 오디오 소스는 소리 파일을 재생하고, 조절하며, 위치와 효과 등을 조작하는 데 사용됩니다.
· Audio Source 생성
- 오디오 소스는 의도에 맞게 씬에 배치해야하기에 오디오 리스너와 달리 기본적으로 배치되지 않아 직접 생성하여 배치해야 합니다.
- 하이어라키의 빈 공간을 우클릭합니다.
- Audio 탭을 찾은 후 Audio Source를 클릭하여 생성합니다.
· Audio Source 컴포넌트
- 오디오 소스를 생성하면 다음과 같이 오디오 아이콘과 함께 구 형태의 기즈모(Gizmo)가 보입니다.
- Audio Source라는 이름의 컴포넌트가 함께 있는 오브젝트로 구성되어 있습니다.
· AudioClip 속성
- Audio Source 오브젝트가 어떤 AudioClip(오디오 클립)을 재생할지 선택합니다.
- 오디오 클립이란, 노래 등의 소리를 재생하기 위한 파일을 생각하시면 됩니다.
- 지원하는 파일 확장자는 WAV(.wav), MP3(.mp3), Ogg(.ogg), AIFF(.aiff), FLAC(.flac) 등을 지원합니다.
- 오디오 클립 파일은 /Assets/Audio에 있습니다.
- 오디오클립에 재생하고 싶은 소리파일을 등록하기 위해서는 다른 속성과 비슷하게 우측의 원 아이콘을 클릭한 후 유니티 /Assets에 등록된 오디오클립 파일을 찾아 등록합니다.
· Mute 속성
- Mute 속성은 다른 소리에서 사용하는 느낌과 동일하게 대상 오디오 소스를 음소거합니다.
- 정지 및 일시정지와 달리 단순히 오디오 소스에서 볼륨을 0으로 설정하는 것입니다.
- 현재 오디오가 재생 중인 경우 정지하지 않고 소리만 내지 않게 됩니다.
· Play On Awake 속성
- 오디오 소스의 오디오 클립을 Scene이 Play모드에 진입 시 즉시 재생을 합니다.
- 오디오 클립이 배경음악등의 특별한 조건 없이 재생하는 것이 목적이라면 이 옵션을 사용할 수 있습니다.
- 별도의 스크립트(코딩) 없이 오디오 클립을 재생할 수 있습니다.
· Loop 속성
- 오디오 클립을 Loop(반복)할지 설정합니다.
- 일반적으로 게임의 배경음악은 해당 맵(Scene)을 벗어날 때까지 재생되므로 Loop 옵션을 활성화할 수 있습니다.
· Volume 속성
- 이 오디오 소스가 재생하는 오디오 클립의 볼륨을 조절합니다.
- 스피커의 볼륨(Master Volume)을 조절하는 것이 아닌 컴퓨터 내의 소리를 재생하는 여러 요소 중 하나의 소스를 제어합니다.
- 모든 오디오 클립의 볼륨이 균일하지 않기 때문에 음량 밸런스를 조절할 때 이 옵션을 사용할 수 있습니다.
· ⭐ Spatial Blend 속성
- 유니티의 오디오 소스의 Spatial Blend 속성은 2D 및 3D 소리의 공간 블렌딩을 제어하는 데 사용됩니다.
- 이 속성을 통해 오디오 소스가 어떻게 들리는지에 대한 공간적인 특성을 조절할 수 있습니다.
- Spatial Blend 속성은 게임의 사운드 디자인을 향상하는 데 사용됩니다. 오디오 소스의 위치와 환경에 따라 소리가 들리는 정도가 변화함으로써, 게임 플레이어에게 몰입감과 현실감을 더욱 제공할 수 있습니다.
Spatial Blend 속성은 다음 세 가지 값으로 설정할 수 있습니다.
2D
Spatial Blend 값을 0으로 설정하면 해당 오디오 소스는 2D 소리로 처리됩니다. 2D 소리는 위치 정보를 가지고 있지 않고, 모노 또는 스테레오로 들립니다. 이 소리는 스크린 상의 위치와 상관없이 전체적으로 들리는 것으로 간주됩니다. 주로 배경 음악이나 인터페이스 효과음 등에 사용됩니다.
3D
Spatial Blend 값을 1로 설정하면 해당 오디오 소스는 3D 소리로 처리됩니다. 3D 소리는 위치 정보를 가지고 있어 오브젝트와의 상대적인 위치에 따라 들리는 정도가 달라집니다. 오디오 소스의 위치와 리스너(플레이어 또는 카메라)의 위치를 기반으로 각각의 오디오 소스의 들리는 정도가 계산됩니다. 이는 게임 내의 사운드 이펙트나 대화 등에 사용됩니다.
Custom
Spatial Blend 값을 0과 1 사이의 값으로 설정하면 해당 오디오 소스는 2D와 3D 소리의 중간 형태로 처리됩니다. 이는 2D와 3D 소리를 혼합하여 공간적인 효과를 더욱 세밀하게 조정할 수 있게 해 줍니다. 값이 0.5에 가까울수록 2D와 3D 사이의 균형을 나타내며, 0.5를 기준으로 2D 또는 3D 소리에 더 가까워집니다.
· ⭐ 3D Sound Settings 속성
- Spatial Blend 속성이 2D가 아닌 경우 이 속성을 설정하여 3D 사운드의 효과를 제어합니다.
- 이 강의에서는 Volume Rolloff와 Min, Max Distance에 대해서 다룹니다.
· Rolloff 속성
- 3D 사운드의 감쇠 정도를 조절하여 게임 세계에서 자연스럽게 소리가 퍼지고 사라지도록 만들어줍니다.
Logarithmic Rolloff (로그형 감쇠)
- 이 설정은 소리의 감쇠율이 로그 함수에 따라 변화하는 것을 의미합니다.
- 멀어질수록 소리의 볼륨이 점차적으로 줄어듭니다.
- 가장 일반적으로 사용되는 Rolloff 형식입니다.
Linear Rolloff (선형 감쇠)
- 이 설정은 소리의 감쇠율이 직선적으로 변화하는 것을 의미합니다.
- 멀어질수록 일정한 비율로 볼륨이 줄어듭니다.
- 본 강의에서는 가장 쉬운 선형 감쇠를 사용합니다.
Custom Rolloff (사용자 정의 감쇠)
- 이 설정은 사용자가 직접 소리의 감쇠율 곡선을 정의할 수 있는 옵션입니다.
- 사용자가 원하는 대로 소리의 감쇠율을 조절할 수 있어 더욱 정밀한 제어가 가능합니다.
· Min, Max Distance속성
- Min Distance과 Max Distance 속성은 오디오 소스가 어느 거리에서 들리고 어느 거리에서 사라지는지를 제어합니다.
- Min Distance은 오디오 소스의 클립이 최대 크기로 들리는 거리를 의미합니다.
- Max Distance은 오디오 소스에서 멀어질 때 소리가 완전히 사라지는 거리를 의미합니다.
3. Audio 재생 제어
- Audio Source에서 오디오 클립을 재생하기 위해 "Play On Awake"를 사용하면 스크립트(코딩) 없이 재생할 수 있으나, 대부분의 오디오는 특정 조건에 재생하는 경우가 대부분입니다.
- 예를 들어 FPS 게임이라면 총을 발사하는 경우 총소리가 나도록 할 필요가 있습니다.
- 이러한 경우는 대부분 스크립트(코딩)를 이용하여 오디오를 재생합니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// AudioSourcePlay 스크립트는 AudioSource를 사용하여 2D 사운드를 재생하고 멈추는 기능을 제공합니다.
[RequireComponent(typeof(AudioSource))]
public class AudioSourcePlay : MonoBehaviour
{
private AudioSource mAudioSource; // AudioSource 컴포넌트를 저장할 변수
private void Awake()
{
// Awake() 함수는 스크립트가 활성화되면서 최초로 호출되는 함수입니다.
// GetComponent<AudioSource>()를 사용하여 이 스크립트가 부착된 게임 오브젝트의 AudioSource 컴포넌트를 가져옵니다.
mAudioSource = GetComponent<AudioSource>();
}
private void OnGUI()
{
// OnGUI() 함수는 매 프레임마다 호출되며, GUI 요소를 그리기 위해 사용됩니다.
// 여기서는 두 개의 버튼을 그립니다.
// 첫 번째 버튼은 2D 사운드 재생 버튼입니다.
// 버튼이 클릭되면 mAudioSource.Play() 함수를 호출하여 AudioSource를 통해 연결된 오디오 파일을 재생합니다.
if(GUI.Button(new Rect(Screen.width * 0.1f, Screen.height * 0.1f, Screen.width * 0.2f, Screen.height * 0.1f), "2D 사운드 재생"))
{
mAudioSource.Play();
}
// 두 번째 버튼은 2D 사운드 멈춤 버튼입니다.
// 버튼이 클릭되면 mAudioSource.Stop() 함수를 호출하여 현재 재생 중인 오디오를 멈춥니다.
if(GUI.Button(new Rect(Screen.width * 0.1f, Screen.height * 0.3f, Screen.width * 0.2f, Screen.height * 0.1f), "2D 사운드 멈춤"))
{
mAudioSource.Stop();
}
}
}
📋 학습 완료
- 유니티의 오디오에 대해 다뤘습니다.
- 오디오 리스너와 오디오 소스 및 오디오 클립에 대해 배웠습니다.
- 2D 사운드와 3D 사운드의 차이점과 3D 사운드를 제어하는 방법을 다뤘습니다.
'unity etc. > lecture' 카테고리의 다른 글
[유니티] 프리팹(Prefab) (0) | 2023.06.19 |
---|---|
[유니티] 터레인(Terrain) (0) | 2023.06.19 |
[유니티] 파티클(Particle) - Confetti(컨페티) 효과 제작 (1) | 2023.06.19 |
[유니티] 골프 게임 제작 실습 (0) | 2023.06.19 |
[유니티] 캐릭터 애니메이션 - Mixamo 캐릭터 (0) | 2023.06.19 |