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

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

by 타락카얀 2023. 1. 31.
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

댓글