当按下一个键时,我有一个正在屏幕上显示的纹理。对此的检查是在基于布尔 help_on 的更新方法中。按 F1 是如果 help_on 为假,则显示纹理并使 help_on 为真。如果 help_on 为真,则将其设为假,这里应该删除一个精灵。任何人都可以给我一个提示吗?我已经知道这可能不是这样做的方法,但我不知道如何以另一种方式做到这一点。
问问题
563 次
2 回答
0
由于我不了解您的游戏架构,因此我将提供一个非常简单的方法:
在您的Update方法中:
kbdState = Keyboard.GetState();
help_on = kbdState.IsKeyDown(Keys.F1);
缓存 KeyboardState 总是好的,因为您通常需要处理的键不仅仅是 F1。然后,在您的Draw方法中:
if (help_on)
spriteBatch.Draw(...); //all your drawing code
于 2013-06-20T09:28:00.660 回答
0
您需要做两件事才能按照您的意愿完成这项工作:
首先,您需要跨帧存储键盘状态,以便检查状态何时发生变化。所以:当一个键在一个帧上“向上”,然后在下一帧“向下”时,你知道那个键在那个帧被“按下”了。
其次,要切换变量,只需将该变量的新值设置为“不是”变量的当前值(将其设置为它的倒数)。
请参阅以下代码,该代码可以放在您的游戏类中:
bool help_on;
KeyboardState lastKeyboardState;
protected override void Update(GameTime gameTime)
{
KeyboardState keyboardState = Keyboard.GetState();
// If the F1 key went down on this frame
if(keyboardState.IsKeyDown(Keys.F1) && lastKeyboardState.IsKeyUp(Keys.F1))
{
help_on = !help_on; // Toggle the help_on variable
}
lastKeyboardState = keyboardState;
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
if(help_on)
{
// Draw your help screen here
}
base.Draw(gameTime);
}
于 2013-06-20T09:44:40.140 回答