2012-09-24 69 views
2

我正在嘗試爲我的太空射擊遊戲實現3D音響系統。我準備好了一切(playng聲音,音量不同,等等),但是我無法找到合適的公式來計算每側的正確音量。太空射擊遊戲中的3D音效

總的想法是,每次玩家(船隻)殺死一個敵人(cammera總是在船的頂端),會聽到正確的左右音量的爆炸聲。所以如果敵人是船的右邊,那麼右邊的通道會聽到更多,與左邊的情況一樣。

,所以我有

vector ship 
vector enemie 

playSound(left ? ,right ?) 

如何遊戲引擎計算左,右聲道?

+1

怎麼想象有左2個物體和船的右側,然後計算到敵人的位置從這些物體的距離,當它爆炸。如果2個距離相等(敵人在你的船下或上面),那麼這些通道應該同樣響亮。如果沒有,最小距離(靠近的一側)可能會收到(距離較短/(距離較遠/ 100))% – CosminO

+3

太空中沒有聲音,所以正確的太空遊戲會保持沉默。 :) – Xeo

+0

大聲笑。那麼它不完全在太空中,所以科幻小說朋友不會因此而發瘋。就像我每次都會在電影中看到這樣:) – SteveL

回答

1

最後我解決了它。我用了類似於Ameoo所說的東西。

這就是:

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); 
}