2012-09-24 5 views
2

우주 슈터 게임을위한 3D 사운드 시스템을 구현하려고합니다. 나는 모든 준비가되어있다. (양면마다 다른 볼륨을 가진 사운드를 연주한다.)하지만 각면의 정확한 음량을 계산하는 수식을 찾을 수 없다.우주 사수 게임의 3D 사운드 효과

일반적인 생각은 플레이어 (선박)가 적을 죽일 때마다 (항상 칸막이가 배의 맨 위에 있음) 올바른 왼쪽 및 오른쪽 볼륨으로 explotion이 들린다는 것입니다. 따라서 적군이 우주선에 적합한 경우 오른쪽 채널은 왼쪽 사례와 마찬가지로 더 많이들을 수 있습니다. 게임 엔진은 왼쪽과 오른쪽 채널을 어떻게 계산합니까 어떻게

는 그래서 난

vector ship 
vector enemie 

playSound(left ? ,right ?) 

있나요?

+1

. 2 개의 거리가 같으면 (적의 함선이 배 아래 또는 위), 채널이 똑같이 크게 재생되어야합니다. 그렇지 않은 경우 가장 가까운 거리 (옆쪽에 더 가깝습니다)는 (smallerDistance/(biggerDistance/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); 
}