Отключить объемный звук с openAL - PullRequest
1 голос
/ 06 июня 2011

Мне по-французски очень жаль мой английский.

В настоящее время я делаю 2D-игру с разделенным экраном с LWJGL.Я использую API openAL, который предоставляется с LWJGL.Кажется, все работает отлично.Что ж, слишком хорошо, чтобы быть честным: потому что я делаю игру с разделенным экраном и потому что у меня не может быть двух слушателей в одном контексте, я хочу избавиться от левого / правого панорамирования.хорошо работать.Я меняю положение звука в зависимости от ближайшего игрока.Слушатель не меняется, всегда при (0,0,0).Положение звука - (soundPosition - closestPlayerPosition).

Так как мне избавиться от окружающего звука?Конечно, я хочу сохранить звук на расстоянии.Я мог бы просто поставить звук на оси Z в зависимости от расстояния, но это кажется немного глупым (мне приходится вычислять расстояние каждый раз, когда мне нужно обновить положение звука).

Спасибо!

1 Ответ

1 голос
/ 06 июня 2011

Когда вы вычисляете положение звука (soundPosition - closestPlayerPosition), берете длину вектора, возвращаемого этим, а затем помещаете этот звук прямо по оси z, на расстоянии от проигрывателя.

Пример:

soundPosition = (1.4,0,1.4) closestPlayerPosition = (0,0,0)

soundDirection = soundPosition - closestPlayerPosition = (1.4,0,1.4)

soundDistance = soundDirection.Length ()

И, наконец, конечная позиция вашего звука:

finalSoundPosition = (0,0, soundDistance) = (0,0,2)

РедактироватьЯ не заметил, что вы уже предложили это.Честно говоря, я думаю, что это нормально, и это единственный способ решить вашу проблему, кроме переписывания содержимого внутри openAL

...