【问题标题】:3D sound effects in space shooter game太空射击游戏中的 3D 音效
【发布时间】:2012-09-15 17:27:12
【问题描述】:

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

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

所以我有

vector ship
vector enemie

playSound(left ? ,right ?)

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

【问题讨论】:

  • 想象一下船的左右有 2 个物体,然后计算当敌人爆炸时这些物体到敌人所在位置的距离。如果 2 个距离相等(敌人在您的船下方或上方),则通道应该播放同样响亮的声音。如果不是,则最小距离(靠近的一侧)可以接收到 (smallerDistance/(biggerDistance/100))%
  • 太空中没有声音,所以正确的太空游戏应该是无声的。 :)
  • 大声笑。好吧,它不完全是在太空中,所以科幻朋友不会对它感到疯狂。就像我每次在电影中看到它一样:)
  • 请将您的答案作为实际答案发布。鼓励自我回答。 :)

标签: c++ soundpool stereo-3d


【解决方案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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多