我正在用 C#/XNA 构建一个游戏,它是一个顶视图赛车游戏,我想在我的车撞到墙上时播放声音效果。
问题是我的声音一直在循环,所以当我撞到墙时,歌曲会立即开始播放,但我想让它播放,等它播放完后,可以再次播放。
这是处理碰撞的代码:
if (map[x][y] == 0)
{
car.speed = 0;
crash.Play(); }
请问我是否有不清楚的地方。
提前致谢!
我正在用 C#/XNA 构建一个游戏,它是一个顶视图赛车游戏,我想在我的车撞到墙上时播放声音效果。
问题是我的声音一直在循环,所以当我撞到墙时,歌曲会立即开始播放,但我想让它播放,等它播放完后,可以再次播放。
这是处理碰撞的代码:
if (map[x][y] == 0)
{
car.speed = 0;
crash.Play(); }
请问我是否有不清楚的地方。
提前致谢!
这是您问题的完整答案:http: //msdn.microsoft.com/en-us/library/dd940203.aspx
SoundEffectInstance instance = soundEffect.CreateInstance();
instance.IsLooped = true;
但是,默认情况下,SoundEffect 不应循环播放...
调用SoundEffect.CreateInstance()以获取SoundEffectInstance。然后在调用Play之前将IsLooped属性设置为 false :
crashSoundEffectInstance.IsLooped = false;
您可能想查看SoundEffectInstance
课程。这是一个如何正确使用它的示例。
可以查看音效状态是否在播放
编辑:我添加了一个更完整的代码,因为我觉得它是必要的。这与我提供的链接中的示例大致相同。(注:此代码未经测试)
//In your content load
SoundEffect crash;
crash = Content.Load<SoundEffect>("PathToYourSoundEffect");
SoundEffectInstance sei = crash.CreateInstance();
//In your update code
if(sei.State == SoundState.Stopped || sei.State == SoundState.Paused)
{
sei.Play();
}