c++ - 太空射击游戏中的 3D 音效

标签 c++ soundpool stereo-3d

我正在尝试为我的太空射击游戏实现 3d 声音系统。我已准备好一切(在每一侧播放不同音量的声音等)但我找不到正确的公式来计算每一侧的正确音量。

一般的想法是,每次玩家(飞船)杀死一个敌人(摄像机总是在飞船的顶部),都会听到正确的左右音量的爆炸声。所以如果敌人在船的右边,那么右边的 channel 会听到更多,左边的情况也是如此。

所以我有

vector ship
vector enemie

playSound(left ? ,right ?)

游戏引擎是如何计算左右声道的?

最佳答案

终于解决了。我使用了类似于 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);
}

关于c++ - 太空射击游戏中的 3D 音效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12561887/

相关文章:

android - Android:同步两个mediaPlayers(一个又一个播放)-消除差距

opencv - 当相机仅向前/向后移动时如何找到视差

c++ - 手动创建的矩阵的 OpenCV 立体声校正

opencv - 从 opencv 中的立体装备拍摄的图像生成的点云

c++ - Poco RefCountedObject 线程安全吗?

c++ - Windows Visual Studio 2008 中的 Unix 生成文件

c++ - GCC/进行构建时间优化

c++ - 为什么迭代器没有在这段代码中初始化

android - 如何将耳机中的音频静音但让它以编程方式在扬声器上播放?

android - 在Android中永久播放而不会暂停