오디오 리스너 데이터 가져오기
audio_listener_get_data 함수는 주어진 리스너의 위치, 속도 및 방향 값을 포함하는 DS 맵을 생성하고 채워줍니다. 기본 리스너 인덱스는 0이며, audio_get_listener_info() 함수를 사용하여 대상 플랫폼에서 사용할 수 있는 다른 인덱스를 얻을 수 있습니다. 잘못된 리스너 인덱스를 제공하면 함수는 -1을 반환합니다.
주의: 반환된 DS 맵은 적절한 함수를 사용하여 파괴해야 합니다. DS 맵에는 다음과 같은 키가 포함됩니다:
| 키 | 설명 |
|---|---|
| "x" | 리스너의 x 위치 |
| "y" | 리스너의 y 위치 |
| "z" | 리스너의 z 위치 |
| "vx" | 리스너의 x축 속도 |
| "vy" | 리스너의 y축 속도 |
| "vz" | 리스너의 z축 속도 |
| "lookat_x" | 리스너의 시선 벡터의 x 구성 요소 |
| "lookat_y" | 리스너의 시선 벡터의 y 구성 요소 |
| "lookat_z" | 리스너의 시선 벡터의 z 구성 요소 |
| "up_x" | 리스너의 위쪽 벡터의 x 구성 요소 |
| "up_y" | 리스너의 위쪽 벡터의 y 구성 요소 |
| "up_z" | 리스너의 위쪽 벡터의 z 구성 요소 |
문법
audio_listener_get_data(index);
인수 설명
| 인수 | 유형 | 설명 |
|---|---|---|
| index | 실수 또는 오디오 리스너 ID | 데이터 가져올 리스너의 인덱스 (기본값은 0). |
반환값
- DS 맵 ID
사용 예시
다음 코드는 사용 가능한 리스너의 수를 확인한 후, 각 리스너를 반복하며 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[? "x"] != 0 {
audio_listener_set_position(info[? "index"], 0, 0, 0);
}
ds_map_destroy(info);
ds_map_destroy(data);
}
추가 사용 예제
- 리스너의 속도 정보 가져오기
- 속도 정보만 가져오고 활용하는 방법입니다.
gml 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"]); show_debug_message("Velocity: " + string(data[? "vx"]) + ", " + string(data[? "vy"]) + ", " + string(data[? "vz"])); ds_map_destroy(info); ds_map_destroy(data); } - 리스너 위치 업데이트
- 특정 조건에 따라 리스너의 위치를 업데이트하는 방법입니다.
gml 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[? "y"] < 0 { audio_listener_set_position(info[? "index"], data[? "x"], 5, data[? "z"]); // y 위치를 5로 설정 } ds_map_destroy(info); ds_map_destroy(data); }
이상으로, audio_listener_get_data 함수에 대한 설명과 예제를 마칩니다. 리스너 데이터 관리를 통해 오디오 환경을 더욱 세밀하게 제어할 수 있습니다.