Bonjour !
Je suis en train de réaliser un jeu de pong en SFML, et je m'intéresse à la spatialisation du son. Seulement, mon jeu n'est toujours pas en stéréo malgré mes tentatives...
Voici mon code concernant le son, en ne gardant que le nécessaire :
partie.hsf::Sound m_sonRebond;
partie.cppm_largeur = 1600; m_hauteur = 900;
Listener::SetPosition(m_largeur/2, m_hauteur/2, 0.0f); // Position du joueur.
Listener::SetTarget(0,0,-1.f);
Listener::SetGlobalVolume(50.f);
sf::SoundBuffer buffer;
if (!buffer.LoadFromFile("rebond.ogg"))
{
cout << "rebond.ogg introuvable" << endl;
return;
}
m_sonRebond.SetBuffer(buffer);
m_sonRebond.SetAttenuation(50.f);
while(1)
{
// ...
m_sonRebond.SetPosition(m_balle[j].getPosX(),m_balle[j].getPosY(),0.0f);
m_sonRebond.Play();
}
J'ai donc mes balles qui se baladent de (0;0) à (1600;900), et je voudrais que selon leur position, j'entende le rebond à gauche ou à droite.
J'ai fait en sorte que l'écouteur regarde vers l'axe Z avec <code type="cpp">
Listener::SetTarget(0,0,-1.f);
</code> , et j'ai positionné l'écouteur au milieu de l'écran. Malgré cela, j'entend toujours en mono... En fait, seul le globalVolume marche.
J'ai aussi essayé d'utilise un .wav à la place du .ogg, mais toujours pas d'amélioration.
Pourriez vous m'aider ?
Par ailleurs, je me posais une question : à quelle distance de l'écouteur entend-on entièrement le d'une seule oreille ?
EDIT : Je suis tombé sur ça :
"Only sounds with one channel (mono sounds) can be spatialized".
Peut-être que ça a un rapport ?
EDIT2 : C'était bien ça ! il fallait un seul canal ^^
Je maintiens toutefois mon auter question, à savoir :
à quelle distance de l'écouteur entend-on entièrement le d'une seule oreille ? Peut-on la régler ?