2013-12-13 74 views
1

的audiofile的我有一個聲音在我的遊戲阻止重複XNA

private SoundEffect sirenSound; 

我有一個使用碰撞檢測時,它已經與敵人模型碰撞檢測模型。

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

這很好,只有我遇到的問題是當兩個模型發生碰撞時,每一幀播放歌曲的另一個副本。

我想,也許這樣的事情會工作

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

它不工作,雖然,任何人都知道一個快速的解決方法,而不必使用定時器嗎?

回答

3

SoundEffect上的Play()方法旨在用於消防和忘記的方式。對於您正在做的事情,您需要使用SoundEffectInstance,如here所記錄。

private SoundEffectInstance sfxInstance; 
private SoundEffect sfx; 

// ... 

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

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

......沿着這些線條的東西。