2012-04-04 4 views
0

ゼロには、問題は、私はのためにこのコードを使用していますが、私は、XNA 4.0でゲームを作成していると私は私のゲームではゲームの時間をリセットに問題があるXNA

を私gametimeをリセットすることはできませんゲームで私のオブジェクトを追加:

Timespan prevSpawn = timespan.zero; 
Timespan objectSpawnTime = timespan.fromsec(5); 

if (gameTime.TotalGameTime - prevSpawn> objectSpawnTime) 
     { 
      prevSpawn = gameTime.TotalGameTime; 
      AddObject(); 
     } 

私はgametimeをリセットしたい、再びゲームを開始したり、ゲーム終了して、再度プレイをメインメニューとヒットに行くとき、私は、ゼロにゲームの時間をリセットしたいです。

+0

あなたの上記のif文に問題がないか、実際のゲーム時間をリセットする方法が問題です。上記の行動のそれぞれについて、イベントを準備していますか? – ericosg

+0

問題は実際のゲーム時間をゼロにリセットしています。私のゲーム終了時にtryAgain状態と呼ばれ、ボタンを押してゲームの再生に使用しました。ボタンの名前は「再生」です。ボタンがゲームをうまく始めるが、問題は私がgametime.totalgametimeをゼロにすることができないということである。オブジェクトを5秒ごとにrespawnする別の方法があれば、私は気にしない。 – Max

答えて

2

以下のMSDNの項目からわかるように、GameTime.TotalGameTimeプロパティは、ゲームを終了するか、アプリケーション全体を終了するまで「ティッキング」します。

http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.gametime.totalgametime.aspx

おそらくあなたがあなたの行動のいずれかでリセットので、時間スパンをより細かく制御することができたため、独自のオブジェクトを使用する方が賢明だろう。次に、このプロパティを使用して、一方の値と他方の値の差を数えます。

リセット/再起動時に、TotalGameTimeを参照せずに0にしてください。自分のオブジェクトのタイムパン、または(TotalGameTime - TimeWhenReset)を参照してください。ここで、TimeWhenResetはTotalGameTimeからコピーされたタイムパンですリセット。

これはテストされていませんが、正しく理解すれば正常に動作するはずです。

+0

これは確かにこの種のことをする方法である。 gameTimeはアプリケーション全体を指し、静的フィールドを持つクラスを使用して内部のゲーム時間を管理することができます。テストする必要はありません。 – Elideb

0

もっと正確なタイマーを使用するには、タイムスパンとDateTimeを使用する方がよいでしょう。あなたはタイマーを開始したいときに、今のDateTimeを設定し、TimeSpanの中でこのような何か:これは、あなたがいつでも展開することができ、タイマーを与える

timer = StartTime - DateTime.Now; 

を。

関連する問題