gpt4 book ai didi

c# - XNA 2D Gamestate,重新启动游戏

转载 作者:行者123 更新时间:2023-12-03 23:10:01 24 4
gpt4 key购买 nike

我正在使用 XNA 开发游戏,当我开始游戏时会弹出一个菜单。如果你按“空格”,游戏本身就会开始。我正在使用具有三种不同情况的游戏状态开关来执行此操作。虽然当我到达最后一个状态(游戏结束屏幕)并想通过按“空格键”重新启动游戏时,除非您按住“空格键”,否则它不起作用。

所以基本上。游戏从菜单屏幕开始。如果你按空格键,游戏本身就会开始。如果您与任何东西发生碰撞并死亡,您将进入游戏结束屏幕。我想要它,以便您可以在按下空格键时返回游戏运行,这是行不通的(除非您按住空格键并保持这种状态)

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);

最佳答案

现在我没有足够的证据来得出一个确切的答案,但如果我猜的话,你的碰撞条件仍然成立,游戏状态就会返回。

正如我在评论中所说,您可以使用调试器来检查是否确实如此。

我还希望您将游戏变量重新初始化回其原始状态,因此当您重新开始游戏时,就好像您是第一次开始游戏一样(并确保碰撞不是真的)

关于c# - XNA 2D Gamestate,重新启动游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13146571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com