오디오 리스너 위치 설정 (`audio_listener_set_position`)
이 함수는 주어진 리스너의 위치를 3D 오디오 공간 내에서 변경할 수 있게 해줍니다. 기본 리스너 인덱스는 0이며, `audio_get_listener_info()` 함수를 사용하여 타겟 플랫폼에서 사용 가능한 다양한 인덱스를 얻을 수 있습니다. 아래 이미지처럼, 리스너의 기본 위치는 (0, 0, 0)입니다. 일반적으로 이 함수를 사용하여 게임 내 플레이어 오브젝트와 함께 리스너를 이동시키고, 그에 따라 이미터가 생성하는 오디오가 플레이어에게 어떻게 들리는지를 변경합니다.
예를 들어 아래의 탑 뷰 게임 이미지에서, 플레이어 인스턴스는 리스너를 설정하고 플레이어가 레벨 내에서 이동할 때 여러 이미터에서 나오는 오디오가 "변화"하게 됩니다.
## 문법
```gml
audio_listener_set_position(index, x, y, z);
매개변수
| 매개변수 | 타입 | 설명 |
|---|---|---|
| index | Real 또는 Audio Listener ID | 위치를 설정할 리스너의 인덱스 (기본값 0) |
| x | Real | 리스너의 x 위치 (기본값 0) |
| y | Real | 리스너의 y 위치 (기본값 0) |
| z | Real | 리스너의 z 위치 (기본값 0) |
반환 값
- N/A
예제
다음 코드는 카메라 뷰 [0]의 뷰 행렬을 가져오고, 이를 사용하여 리스너 ID가 global.Player_Listener에 저장된 리스너의 위치와 방향을 설정합니다.
var _vmat = camera_get_view_mat(view_camera[0]);
audio_listener_set_position(global.Player_Listener, _vmat[0], _vmat[1], _vmat[2]);
audio_listener_set_orientation(info[? "index"], _vmat[3], _vmat[4], _vmat[5], _vmat[6], _vmat[7], _vmat[8]);
활용 및 응용 예제
- FPS 게임에서 리스너 설정
- 플레이어가 이동할 때 리스너의 위치를 조정하여 주변 환경의 오디오가 자연스럽게 들리도록 할 수 있습니다.
gml audio_listener_set_position(0, player.x, player.y, player.z);
- 오디오 새로 고침
- 리스너의 위치를 지속적으로 업데이트하여 동적인 오디오 환경을 만들 수 있습니다.
gml // 게임 루프 안에서 audio_listener_set_position(0, player.x, player.y, player.z);
- 멀리 있는 오디오 조정
- 특정 조건에서 리스너의 위치를 변경하여 보다 극적인 효과를 줄 수 있습니다.
gml if (event == "cutscene") { audio_listener_set_position(0, cutscene.x, cutscene.y, cutscene.z); }
참고 링크
© Copyright YoYo Games Ltd. 2022 All Rights Reserved ```