본문 바로가기
GameMaker강좌[GM8]/기초강좌

[게임메이커강좌-기초] 3D 사운드 재생

by 타락카얀 2017. 1. 3.
728x90



GAME MAKER 강좌



KAYAN









◈ 3D 사운드 재생



이번 강좌에서는 3D 사운드를 재생하는 방법에 대해 알아보도록 합시다.

게임메이커 스튜디오에서 3D 사운드의 재생은 아래 화면과 같이, 먼저 사운드를 재생 할 때, 위치를

지정해주어 사운드를 재생합니다. 그리고 듣는 위치(플레이어의 위치)를 조절해 주면 됩니다..

그러면 플레이어의 위치에 따라 사운드의 위치를 체크하여, 사운드 볼륨을 자동으로 변경해, 마치

3D 사운드를 듣는 것 처럼 사운드를 재생하는 것이지요.



(▲ 사운드를 듣는 위치에 따라 볼륨을 조절)


먼저 사운드를 특정 위치에 재생할 수 있는 함수는 아래와 같습니다.


 

audio_play_sound_at(index, x, y, z, falloff_ref, falloff_max, falloff_factor, loop, priority)



index 에 재생할 사운드를 지정해주고, x,y,z 에 재생 위치를 지정해주어 재생하면 됩니다.
falloff_ref 는 사운드를 최대 볼륨(기본 값)으로 유지 시킬 거리를 지정해주고, falloff_max

사운드를 들을 수 있는 최대 거리(사운드가 작아지는 거리 포함)를 지정합니다.
falloff_factor 는 볼륨이 변화가 있는 거리 값(기본값=1)을 지정해주면 됩니다. 예를 들어, 1 값을

지정하면, falloff_ref 거리 이후 1만큼 멀어질 수록 볼륨에 변화를 줍니다.
loop 는 사운드를 반복 재생(반복재생=1, 1회 재생=0)할 지를 지정해주면 됩니다.
그리고 priority 는 우선 순위로 0 또는 1, 또는 0~100 사이의 값을 지정해주면 됩니다.

다음은 거리에 따른 사운드 볼륨의 변화 형태를 설정해야 합니다.
거리에 따른 사운드 볼륨의 변화 형태를 설정 할 수 있는 함수가 있습니다.


 

audio_falloff_set_model(model)



이 함수의 model 값은 audio_falloff_exponent, audio_falloff_inverse, audio_falloff_linear, 3 종류

지정할 수 있습니다.


1) audio_falloff_exponent


 

//audio_falloff_set_model 의 model 값


audio_falloff_exponent_distance
audio_falloff_exponent_distance_clamped





(▲ audio_falloff_exponent_distance - 거리에 따른 사운드 볼륨 크기의 변화)


2) audio_falloff_inverse


 

//audio_falloff_set_model 의 model 값


audio_falloff_inverse_distance
audio_falloff_inverse_distance_clamped




(▲ audio_falloff_inverse_distance - 거리에 따른 사운드 볼륨 크기의 변화)


3) audio_falloff_linear


 

//audio_falloff_set_model 의 model 값


audio_falloff_linear_distance
audio_falloff_linear_distance_clamped




(▲ audio_falloff_linear_distance - 거리에 따른 사운드 볼륨 크기의 변화)


마지막으로 사운드의 듣는 위치를 설정하면 됩니다.
사운드의 듣는 위치는 아래의 함수를 사용하여 조절 할 수 있습니다.


 

audio_listener_position(x, y, z)



위치는 보통 플레이어의 위치를 지정합니다.

일반적으로 (x,y,z) 는 3D 좌표이지만, 2D 일 경우 z값을 0으로 한 채, (x,y,0)으로 지정하면 됩니다.

예를 들어,


 

예) 사운드 재생 거리 100 까지는 기본 볼륨으로, 100~300 사이의 거리에 따라 볼륨이

조절되로록 할 경우.

◎ 사운드 재생 위치 설정
audio_falloff_set_model(audio_falloff_linear_distance);//사운드 볼륨 형태 설정
snd=audio_play_sound_at(sound1,x,y,0,100,300,1,1,1);//사운드를 특정 위치에 재생


◎ 사운드 듣는 위치 설정(플레이어의 위치)
audio_listener_position(x,y,0);//듣는 위치



이와 같이 한다면, 사운드가 재생되는 곳에서 거리 100 까지는 기본 볼륨으로, 100 이후 부터는

볼륨이 점점 작아지고, 300 이후로는 사운드가 들리지 않게 합니다.

이것은 audio_listener_position 함수를 통해 듣는 위치에 따라 볼륨을 자동으로 조절 하는 것입니다.



300x250

댓글