Я пытаюсь реализовать трехмерную звуковую систему для моей космической стрелялки. У меня все готово (воспроизведение звука с различной громкостью на каждой стороне и т. Д.), Но я не могу найти формулу Corrent, чтобы рассчитать правильную громкость для каждой стороны.
Общая идея заключается в том, что каждый раз, когда игрок (корабль) убивает врага (каммера всегда находится на вершине корабля), будет слышен взрыв с правильной громкостью слева и справа. Так что, если противник находится справа от корабля, то правый канал будет слышен больше, как и в случае с левым.
так что я
vector ship
vector enemie
а также
playSound(left ? ,right ?)
Как игровые движки рассчитывают левый и правый каналы?
Наконец я решил это. Я использовал что-то похожее на то, что сказал Амео.
Вот:
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);
}
Других решений пока нет …