오디오 리스너 속도 설정 (audio_listener_set_velocity)
이 함수는 주어진 리스너에게 도플러 효과를 제공하고 주어진 상대 `x`, `y`, `z` 위치에서 계산된 벡터에 기반하여 오디오의 움직임을 시뮬레이션하는 데 사용할 수 있습니다. 기본 리스너 인덱스는 0이며, 대상 플랫폼에서 사용할 수 있는 다양한 인덱스를 얻으려면 `audio_get_listener_info()` 함수를 사용할 수 있습니다.
만약 주어진 리스너가 움직이지 않거나 움직임이 일정하지 않다면, 일반적으로 이 값을 설정할 필요는 없습니다. 하지만 예를 들어, 플레이어가 아래에서 위로 일정하게 움직이고 적들이 위에서 아래로 이동하는 스크롤 게임을 만든다면, 리스너와 발신자의 속도(`audio_emitter_velocity()` 사용) 를 적절한 벡터로 설정하여 그들이 지나갈 때 올바른 도플러 효과를 시뮬레이션할 수 있습니다.

## 문법
```gml
audio_listener_set_velocity(index, x, y, z);
인자 설명
| 인자 | 타입 | 설명 |
|---|---|---|
| index | Real 또는 Audio Listener ID | 속도를 변경할 리스너 (기본값 0). |
| x | Real | 리스너의 x 방향 속도 (기본값 0). |
| y | Real | 리스너의 y 방향 속도 (기본값 0). |
| z | Real | 리스너의 z 방향 속도 (기본값 0). |
반환 값
N/A
예제
다음 코드는 사용 가능한 리스너의 수를 확인한 후, 각 리스너를 반복하고 x 속도가 0이 아닐 경우 속도 값을 (0, 0, 0)으로 설정합니다.
var num = audio_get_listener_count();
for(var i = 0; i < num; ++i;) {
var info = audio_get_listener_info(i);
var data = audio_listener_get_data(info[? "index"]);
if (data[? "vx"] != 0) {
audio_listener_set_velocity(info[? "index"], 0, 0, 0);
}
ds_map_destroy(info);
ds_map_destroy(data);
}
활용 및 응용 예제
- 플레이어와 적의 상호작용 효과
- 플레이어가 지속적으로 위로 이동하고, 적이 반대로 아래로 이동하는 상황을 고려하여 리스너와 발신자의 속도를 각각 설정하여 도플러 효과를 극대화할 수 있습니다.
- 사운드 환경 변경
- 게임 내에서 특정 레벨이나 사라진 구조물의 위치에 따라 리스너의 위치와 속도를 변경함으로써 사운드의 분위기를 조절할 수 있습니다.
- 특정 이벤트에 반응하는 사운드
- 특정 이벤트가 발생했을 때 리스너의 속도를 변경하여 다이내믹한 사운드 경험을 제공할 수 있습니다.
이와 같이 audio_listener_set_velocity 함수를 활용하면 다양한 오디오 효과를 구현할 수 있습니다.
© YoYo Games Ltd. 2022 All Rights Reserved ```