3D звуковые эффекты в космическом шутере

Я пытаюсь реализовать трехмерную звуковую систему для моей космической стрелялки. У меня все готово (воспроизведение звука с различной громкостью на каждой стороне и т. Д.), Но я не могу найти формулу Corrent, чтобы рассчитать правильную громкость для каждой стороны.

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

так что я

vector ship
vector enemie

а также

playSound(left ? ,right ?)

Как игровые движки рассчитывают левый и правый каналы?

2

Решение

Наконец я решил это. Я использовал что-то похожее на то, что сказал Амео.

Вот:

void Play3D(int id,vector3d ship,vector3d pos,float arenaWidth,float power)
{
float disright=calculate_distance(ship.x+0.2f,ship.y,pos.x,pos.y);
float disleft=calculate_distance(ship.x-0.2f,ship.y,pos.x,pos.y);
sf.Play(2,1-disleft/arenaWidth*power,1-disright/arenaWidth*power);
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]