Unity 3D Audio in Script
유니티 3D 의 스크립트에서 오디오 소스 다루는 예
유니티에서 오디오 소스는 GameObject 에 포함하여 사용하는 Component 로 다루고 있다.
그런데 한개의 GameObject 에는 오디오 소스를 한개만 포함할 수 있고 오브젝트에 포함된 오디오 소스는 해당 오브젝트에서 audio 라는 객체로 다룰 수 있다.
즉, 어떤 오브젝트가 오디오 소스를 포함하고 있다면 그 오브젝트에 포함되는 스크립트에서는 다음과 같이 오디오 소스에 접근할 수 있다
audio.enabled = true;
audio.Play();
Scene 뷰 상의 어떤 지점을 향하여 First Person Controller 가 이동할 때 일정한 범위 내로 진입하면 음악이 들리는 간단한 예제를 작성해보려고 한다
프로젝트를 새로 생성하고 Scene 뷰에 Plane, Sphere, First Person Controller 를 올려서 오디오를 설정할 준비를 한다.
평면의 크기는 20 X 20 으로 설정하였고 평면의 한쪽 끝 부분에 Sphere 를 올리고 Sphere 의 반대편에는 First Person Controller 를 위치하도록 설정하였다.
Shpere 에 음악파일(mp3) 파일을 포함시킬 예정이고 FPC 가 Sphere 를 향하여 이동할 때 일정한 범위 내로 진입하면 Shpere에 포함된 음악파일이 Play 되도록 스크립트를 작성할 것이다.
Sphere 의 일정한 범위내로 진입하는 오브젝트를 탐지하는 것은 Collider의 Is Trigger 항목에 체크하면 되므로 Sphere 오브젝트에게 Box Collider 를 추가하여 Box Collider 안으로 들어가는 오브젝트가 있다면 음악이 연주되도록 스크립트를 작성하면 된다
사용할 음악파일(mp3)을 현재 프로젝트의 Assets 폴더 안으로 임포트한다
Sphere 오브젝트에 음악파일을 포함하려면 우선 Audio Source 콤포넌트를 Sphere 에 추가하고 Audio Source 콤포넌트의 Audio Clip 항목으로 음악파일을 드래그하여 할당하면 된다
Sphere 오브젝트에 추가된 Audio Source 콤포넌트를 Inspector 뷰에서 보면 Audio Clip 항목이 None 으로 되어 있는 이곳에 위에서 임포트한 음악파일을 드래그하여 할당한다
3D Sound Settings 항목을 아래처럼 설정한다
위의 설정을 마치고 Play 모드로 테스트해보면 실행과 동시에 음악이 연주되는 것을 확인할 수 있다. Play On Awake 항목이 체크되어 있으면 실행과 동시에 사운드가 Play 된다. 여기서는 처음에 음악이 Play되지 않다가 Collider 영역에 진입할 경우에 음악이 Play 되어야 하므로 이제부터 Play On Awake 항목의 체크를 해제해야 한다
FPC 가 Sphere 를 향하여 일정한 범위 내로 진입하기 전에는 음악이 연주되지 않도록 하려면 Sphere 주위에 Box Collider 를 설정하고 Collider 내로 진입하면 음악이 연주되도록 스크립트를 작성하면 된다.
우선 Sphere 에 디폴트로 설정되어 있는 Sphere Collider 를 삭제하고 Box Collider 를 포함시켜서 영역을 조정해보자.
Sphere 오브젝트에 Box Collider 콤포넌트를 추가하고 Collider 의 영역의 크기를 확대하여 조정한 상태
이때 Collider가 충돌을 탐지하여 다른 오브젝트가 관통하지 못하도록 하면 안되므로 Is Trigger 항목을 체크한다. 이 부분이 체크되면 Collider를 다른 오브젝트가 관통할 수 있고 관통할 때 핸들러 함수가 호출된다
Project 뷰의 Assets 폴더에 마우스 우측을 누르고 Script > Javascript 항목을 선택하여 항목이 생성되면 더블클릭하여 에디터를 열고 다음과 같이 입력한다
#pragma strict
function Start () {
}
function Update () {
}
function OnTriggerEnter(collider:Collider){
audio.enabled = true;
audio.Play();
}
function OnTriggerExit(collider:Collider){
audio.enabled = false;
}
스크립트를 Hierarchy 뷰의 Sphere 에 드래그하여 포함시키고 Play 모드로 테스트한다.
FPC를 WASD 키와 마우스로 조정하여 Sphere 로 향하여 가다보면 처음에는 음악이 안들리다가 Collider 영역에 진입하면 음악이 연주되는 것을 확인할 수 있다