1

私は C#/XNA でゲームを構築しています。これはトップ ビューのレーシング ゲームで、車が壁にぶつかったときに効果音を再生したいと考えています。

問題は、私のサウンドがループし続けることです。壁にぶつかるとすぐに曲が再生されますが、再生したいのですが、再生が終了すると、もう一度再生できます。

衝突を処理するコードは次のとおりです。

if (map[x][y] == 0) { car.speed = 0;

crash.Play(); }

何かわからないことがあれば聞いてください。

前もって感謝します!

4

3 に答える 3

4

質問に対する完全な回答は次のとおりです。 http://msdn.microsoft.com/en-us/library/dd940203.aspx

SoundEffectInstance instance = soundEffect.CreateInstance();
instance.IsLooped = true;

ただし、デフォルトでは、SoundEffect はループされるべきではありません...

于 2012-11-16T17:37:57.417 に答える
2

SoundEffect.CreateInstance()を呼び出して、 SoundEffectInstanceを取得します。Playを呼び出す前にIsLoopedプロパティを false に設定します。

crashSoundEffectInstance.IsLooped = false;
于 2012-11-16T16:34:35.840 に答える
1

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();
}
于 2012-11-16T16:11:52.037 に答える