Hallo zusammen… Momentan programmiert unsere Gruppe ein Spiel in C# / XNA. Jetzt stellt etwas eigentlich einfaches ein Problem dar. Eine Pausefunktion… wie implementiert man die? Ich habe nun schon mehrere Tutorials durchforstet, aber keine war wirlich hilfreich. Eine funktionierte gar nicht (Laufzeitfehler) und die andere war voller Schreibfehler. Momentan habe ich diesen Inhalt:
//Deklaration wichtiger Variablen
enum GameStates
{
Normal,
Paused,
}
GameStates GameState;
float KeyPressCheckDelay = 0.25f;
float TotalElapsedTime = 0;
//----------------------------------------------
protected override void Update(GameTime gameTime)
{
//überprüft Tastatureingabe
UpdateKeyboard(gameTime);
base.Update(gameTime);
//Pause
// Needed for keyboard events
float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;
TotalElapsedTime += elapsed;
KeyboardState ksKeyboardState = Keyboard.GetState();
// Normal game loop
if (GameState == GameStates.Normal)
{
// Do your normal game logic here.
if (TotalElapsedTime \>= KeyPressCheckDelay)
{
// Pause the current game
if (ksKeyboardState.IsKeyDown(Keys.P))
{
GameState = GameStates.Paused;
TotalElapsedTime = 0.0f;
}
}
}
// Game is paused.
else
{
if (TotalElapsedTime \>= KeyPressCheckDelay)
{
// UnPause the current game
if (ksKeyboardState.IsKeyDown(Keys.P))
{
GameState = GameStates.Normal;
TotalElapsedTime = 0.0f;
}
// Do any other fun stuff you want to do while the game is paused.
}
}
base.Update(gameTime);
}
Das ist mithilfe eines Tutorials erstellt. Das Programm ist auch ausführbar, aber beim Drücken der P Taste passiert nichts. Die Animation hält nicht an.
Ich habe auch das Gefühl, dass da noch was fehlt, schließlich setzt man ja nur GameState auf Paused, aber sagt dem Programm nicht, was es machen soll wenn dem so ist.
Vielleicht gibt es ja auch einen deutlich einfachereren Weg. Würde mich jedenfalls sehr freuen wenn ihr mir helfen könntet.