2010-11-04 4 views
5

Je développe un jeu. Comment puis-je "incorporer" le volume audio d'un son, en fonction de la "distance" d'une image-objet dans la scène de rendu en cours? Supposons que j'ai un monde:Algorithme pour régler le volume "audio" approprié en fonction de la distance (x, y)

WIDTH_WORLD = 10000 
HEIGHT_WORLD = 10000 

Current Scene 
xCurrent = 800 (+ Width Res. = 800 + 1024 = 1824) 
yCurrent = 400 (+ Height Res. = 400 + 768 =...) 

Far Sprite 
xSprite = 7000 
ySprite = 3000 

Qu'est-ce qu'un bon algorithme de volume audio « calculer » (et peut-être à gauche/droite rapport de canal pan)? Merci d'avance!

+0

La bibliothèque je suis l'utilisation est SDL.NET (basée sur l'obv. sur SDL) – stighy

+0

Ne pas oublier l'effet Doppler! –

Répondre

2

total Volumn

  • Il existe plusieurs approches pour l'atténuation du volume. Par exemple. vous pouvez utiliser une fonction d'amortissement linéaire, comme volume = max(0, max_volume - max_volume/max_distance * distance), ou une fonction avec la baisse de la distance inverse, comme volume = min(max_volume, max_volume/distance).

Ratio d'équilibre

  • Encore une fois, il existe plusieurs approches pour réaliser une fonctionnalité adéquate. Dans votre cas, vous pouvez dire, si l'objet se trouve au niveau ou au-delà de la bordure de l'écran gauche, faire un panoramique vers la gauche, si l'objet se trouve sur ou au-delà de la bordure droite de l'écran. balance = (object_x-camera_x)/screen_half_width avec des valeurs comprises entre -1: gauche, +1: droite et 0: centre.

En combinant ces approches, vous devez penser à ce qui est adapté à votre cas: Par exemple, seulement humide le volume si l'objet est hors des limites de l'écran, ce que jamais ...

+0

Merci mec, ça marche comme un charme !! ;) – stighy

0

Eh bien, le volume d'un son se dégrade comme le carré de la distance de la source sonore, ce qui vous donnerait un bon point de départ. Cependant, sachez quelle bibliothèque vous utiliserez pour votre jeu - beaucoup de bibliothèques de jeux auront déjà ce type de fonctionnalité.

+0

Carré? J'aurais deviné le cube, car c'est un espace à trois dimensions. Beaucoup dépend de la façon dont 'volume' est réellement défini bien ... – Wrikken

+2

Hmm, en effet. le son ne «remplit» pas un volume et ne se déplace pas en cube. Il voyagerait par une sphère (technicité précédente, par exemple, se tenir debout sur le sol ou rebondirait sur des objets solides), et vit à la surface («4 PI r^2»), donc en effet. mon premier instinct était complètement faux, je suis corrigé. – Wrikken

2

Utilisez la distance (Dsquared = xdist^2 + ydist^2) comme facteur d'échelle pour réduire votre volume. Inversez cette valeur de la distance au carré pour l'appliquer directement à votre volume (le volume tombe comme un carré de distance, et la distance est facilement calculée comme une valeur au carré).

Le ratio canal gauche/droite est défini simplement en définissant deux points différents pour les canaux gauche et droit (respectivement à gauche et à droite de votre emplacement de rendu), effectuez le calcul ci-dessus et trouvez les ratios de vos canaux de cette façon. Parce que le calcul ci-dessus est juste une somme de deux carrés, il est très simple de calcul.

Questions connexes