我正在XNA游戏中工作,当我开始游戏时,弹出一个菜单。如果你按“空格”,游戏本身就会开始。我正在使用具有三种不同情况的游戏状态切换器来执行此操作。虽然当我达到最后状态(游戏画面)并且想要通过按“空格”重新开始游戏时,除非您按住“空格键”,否则它无法正常工作。XNA 2D游戏状态,重新启动游戏
所以基本上。游戏从菜单屏幕开始。如果你按下空格,游戏本身就会开始。如果你碰到任何东西并死亡,你会进入游戏画面。我想要它,以便您可以返回到游戏运行,如果你按空间,这是行不通的(除非你按住空间,并保持这种方式)
PS:我愿意添加更多的代码,如果需要的话,只是要求而已。提前致谢!
这里是我的更新代码:
const int introMenu = 0, gameRunning = 1, gameOver = 2;
switch (gameState)
{
case introMenu:
if (ks.IsKeyDown(Keys.Space))
{
gameState = gameRunning;
}
break;
case gameRunning:
if(colliding)
{
gameState = gameOver;
}
break;
case gameOver:
if (ks.IsKeyDown(Keys.Space))
{
gameState = gameRunning; //NOT WORKING!
}
break;
}
这里是我的抽奖代码:
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin();
switch (gameState)
{
case introMenu:
background.Draw(spriteBatch);
break;
case gameRunning:
//draw the player, new background and everything nessecary
break;
case gameOver:
//draw new gameover background
break;
}
spriteBatch.End();
base.Draw(gameTime);
这是95%的事情不能正确重新启动的原因。确保每次“重新启动”程序时重置所有变量。为了消除任何可能的错误,我建议将它们重置为初始化它们的任何东西,以便下一次通过游戏时将它看作是全新的 –
是的,现在我注意到了。碰撞仍然是真实的,船一次又一次地碰撞。我将它设置为false并重置所有变量并查看它将如何工作。谢谢。 – user1775668
虽然,我有一个问题。我应该手动重置变量还是有更简单的方法来重新初始化它们? – user1775668