오디오 리스너 방향 설정 함수 해설
개요
audio_listener_set_orientation 함수는 3D 오디오 공간 내에서 주어진 리스너의 방향을 변경할 수 있게 해줍니다. 기본 리스너 인덱스는 0이며, 특정 플랫폼에서 사용 가능한 인덱스를 알아보려면 audio_get_listener_info() 함수를 사용할 수 있습니다.
리스너의 방향은 상대적인 x, y, z 위치에서 계산된 look at vector와 up vector에 따라 결정됩니다. 기본값은 look at vector는 (0, 0, 1), up vector는 (0, 1, 0)입니다. 아래 예시에서 설명합니다:
- 리스너가 기본 위치에 있을 때, 주변의 오디오 발생기로부터 발생한 소리는 리스너의 아래쪽과 오른쪽에서 오는 것처럼 들립니다.
- 리스너의 새로운 위치와 방향으로 변경하면 소리는 위쪽과 오른쪽에서 오는 것처럼 들리게 됩니다.
구문
audio_listener_set_orientation(index, lookat_x, lookat_y, lookat_z, up_x, up_y, up_z);
인자 설명
| 인자 이름 | 타입 | 설명 |
|---|---|---|
| index | Real 또는 Audio Listener ID | 방향을 설정할 리스너의 인덱스 |
| lookat_x | Real | x 방향의 시선 벡터 (기본값: 0) |
| lookat_y | Real | y 방향의 시선 벡터 (기본값: 0) |
| lookat_z | Real | z 방향의 시선 벡터 (기본값: 1) |
| up_x | Real | x 방향의 위쪽 벡터 (기본값: 0) |
| up_y | Real | y 방향의 위쪽 벡터 (기본값: 1) |
| up_z | Real | z 방향의 위쪽 벡터 (기본값: 0) |
반환값
- 해당 함수는 값을 반환하지 않습니다.
예제
다음 코드는 카메라 뷰의 뷰 행렬을 가져와, 오디오 리스너의 위치와 방향을 설정합니다.
var _m = camera_get_view_mat(view_camera[0]);
audio_listener_set_position(global.Player_Listener, _m[0], _m[1], _m[2]);
audio_listener_set_orientation(info[? "index"], _m[3], _m[4], _m[5], _m[6], _m[7], _m[8]);
위의 코드는 카메라 뷰 [0]에 대한 뷰 행렬을 가져와, 이를 사용해 Player_Listener에 저장된 ID를 가진 리스너의 위치와 방향을 설정합니다.
다양한 활용 예제
1. 게임 환경에 따라 리스너 방향 변경
게임 환경이 변화할 때마다 리스너 방향을 조정하여 더 몰입감 있는 경험을 제공할 수 있습니다.
if (room_speed > 60) {
audio_listener_set_orientation(global.Player_Listener, 1, 0, 0, 0, 1, 0); // 앞쪽으로
} else {
audio_listener_set_orientation(global.Player_Listener, -1, 0, 0, 0, 1, 0); // 뒤쪽으로
}
2. 특정 이벤트 발생 시 시선 변경
예를 들어, 특정 이벤트가 발생할 때 리스너의 시선을 변경하여 특수 효과나 느낌을 줄 수 있습니다.
if (event_occurred) { // 이벤트가 발생했다면
audio_listener_set_orientation(global.Player_Listener, 0, 1, 0, 0, 0, 1); // 위쪽으로
}
이와 같이 audio_listener_set_orientation 함수는 다양한 상황에서 리스너의 방향을 조정하여 사용자에게 다채로운 오디오 경험을 제공할 수 있습니다.