Unity3D/Audio Source

Unity 3D Audio Source

Soul-Learner 2014. 3. 4. 23:57

유니티 3D에서 오디오 소스 사용하기


유니티 3D 의 게임 프로젝트로 바로 임포트하여 사용할 수 있는 사운드 포맷은  AIFF, MP3, WAV, OGG 등이며

유니티로 임포트된 오디오 파일은 스크립트에서 Audio Clip 인스턴스로 사용할 수 있으며 이 때 Audio Clip 인스턴스는 임포트된 사운드 파일의 컨테이너 역할을 하게 된다. 

유니티로 임포트 된 사운드 파일이 실제로 들려지기 위해서는 Audio Souce 및 Audio Listener 가 함께 사용되어야 한다.

게임 오브젝트에 사운드를 포함하도록 설정하려면 Audio Source 콤포넌트를 추가하고 사운드 파일을 드래그하여 할당하면 된다.

Audio Listener 는 현재 플레이 되고 있는 사운드의 전체 범위를 듣고 있으면서 실제로 스피커를 통해 내 보낼 사운드를 조절하는 역할을 한다

참고로 한개의 Scene 에는 한개의 Audio Listener 만 존재해야 하며 일반적으로 Main Camera에 Audio Listener 가 포함되어 있다.

First Person Controller (FPC) 에도 Main Camera 가 포함되어 있기 때문에 한개의 Scene 에 2개의 Audio Listener 가 존재하는 경우가 있으므로 이런 경우에는 디폴트로 생성된 Main Camera 의 Audio Listener 를 Inspector 뷰에서 삭제해 주면 된다


여기서는 지형(Terrain) 위에 나무(Tree)를 많이 생성하여 숲을 만들고 숲 속에 Wind Zone 오브젝트를 설정하여 바람에 나뭇가지가 흔들리고 숲의 중심부로 갈수록 바람소리가 점점 거세게 들리는 효과를 구현해 보려고 한다


유니티 3D에서 프로젝트를 새로 생성하고 Terrain 위에 숲을 생성한다. 나무를 Terrain 툴에 추가할 때는 Bend Factor 에 수치를 입력하여 바람에 구부러지도록 설정해야 한다. 이어서 GameObject > Create Other > Wind Zone 을 선택하여 숲의 중심부에 Wind Zone 오브젝트를 위치하도록 설정한다

Project 뷰로부터 First Person Controller 를 Scene 뷰에 드래그하여 설정하고 카메라의 방향은 숲의 중심을 향하도록 조정한다


위의 설정을 마치고 Play 모드에서 테스트해보면 숲에 바람이 불어서 나뭇가지가 흔들리는 장면이 구현될 것이다

이로써 오디오 소스를 테스트할 프로젝트가 준비되었다



그런데 위의 그림 하단에 나온 메시지를 보면 Scene 에 오디오 리스너가 2개가 있으며 항상 리스너는 1개만 있어야 된다는 경고를 확인할 수 있다


디폴트 Main Camera와 FPC 의 Main Camera, 이렇게 2개의 Main Camera 가 있으므로 당연히 오디로 리스너도 2개가 되기 때문에 여기서 사용할 FPC 의 Main Camera 는 그대로 두고 디폴트 Main Camera 의 Audio Listener 콤포넌트를 삭제하면 된다.




사용할 사운드 파일을 현재 Project 뷰로 임포트한다

Wind-Mark.zip





MP3 파일이 임포트되면 아래 그림과 같이 Project 뷰에 등록이 되고 Inspector 뷰에 사운드를 테스트해볼 수 있도록 툴이 준비된다.

여기서 테스트용으로 사용할 사운드 내용은 바람소리이다.




바람소리는 바람이 부는 곳에서 가장 크게 들려야 하므로 Wind Zone 오브젝트에 Audio Source 콤포넌트를 추가하고 임포트한 사운드 파일을 드래그하여 포함시켜 주면 되겠다.



Wind Zone 오브젝트를 Hierarchy 뷰에서 선택하고 Component > Audio > Audio Source 를 선택하여 Audio Source 콤포넌트를 추가한다




Project 뷰의 사운드 파일을 드래그하여 Inspector 뷰의 Audio Clip 에 포함시킨다. 필요에 따라 Play On Awake 항목을 체크하면 프로그램 시작과 함께 사운드가 플레이되고 Loop 에 체크하면 사운드가 1회만 Play 되는 것이 아니라 종료되면 바로 다시 새로 시작되는 과정을 되풀이 하게 된다



위의 절차를 마치면 Play 모드로 테스트할 수 있다. Play 버튼을 누르고 WASD 버튼과 마우스를 이용하여 FPC 를 숲의 중심부로 이동해 가면 바람소리가 점차 거세게 들려오게 된다. Wind Zone 과 FPC 의 거리에 따라 들려오는 바람소리의 강도를 조정할 수 있는데 아래의 그림을 참조한다

아래의 그림에서 그래프가 의미하는 것은 가로축은 거리, 세로축은 소리의 강도인데 그래프가 급경사를 이루고 있으므로 Wind Zone 에 매우 가까이 갔을 때에야 비로소 바람소리가 갑자가 거세게 들려지기 시작한다는 것을 의미한다


위의 사운드 설정을 변경하여 거리에 따라 일정한 비율로 바람소리가 강해지도록 Linear 형태로 그래프를 수정하려고 한다.

Volumn Rollof 항목에서 Linear Rollof 를 선택하면 그래프가 변경되고 그래프 위에서 마우스 우측을 누르고 Add Key 를 선택하면 그래프의 곡선도 편집할 수 있다. 이 그래프는 오디오 리스너가 참조하여 스피커에 내 보내는 사운드의 양을 조절하게 된다. 오디오 리스너는 현재 FPC 의 Main Camera 에 설정되어 있기 때문에 FPC 가 점차 Wind Zone 에 가까이 감에 따라서 FPC의 오디오 리스너는 바람 소리의 강도가 거리에 따라 비례하도록 조절하여 스피커에 사운드를 내 보내게 된다.



위의 절차로 유니티에 사운드 설정을 마치면 Play 버튼을 눌러 테스트해 볼 수 있다.

FPC 를 이동하여 Wind Zone에 가까이 갈수록 바람소리가 강하게 들려지는 것을 확인할 수 있다.