阻止audiofile重复XNA

时间:2013-12-13 18:21:20

标签: c# audio timer xna

我的游戏中有声音

private SoundEffect sirenSound;

我有一个模型,它使用碰撞检测来检测它何时与敌人模型发生碰撞。

if (enemySphere.Intersects(playerSphere))
{
    health--;
    sirenSound.Play();
}

这个问题很好,只有我遇到的问题是,当两个模型发生碰撞时,每一帧都播放另一首歌曲。

我想也许这样的事情会起作用

if(sirenSound.Play() == false)
   sirenSound.Play();

它不起作用,任何人都知道快速解决方法而不必使用计时器?

1 个答案:

答案 0 :(得分:3)

Play()上的SoundEffect方法旨在以难以忘怀的方式使用。对于您正在做的事情,您希望使用SoundEffectInstance,如文档here所示。

private SoundEffectInstance sfxInstance;
private SoundEffect sfx;

// ...

if (sfxInstance == null)
    sfxInstance = sfx.CreateInstance();

if (sfxInstance != SoundState.Playing)
    sfxInstance.Play();

...沿着这些方向发展。