1

当按下一个键时,我有一个正在屏幕上显示的纹理。对此的检查是在基于布尔 help_on 的更新方法中。按 F1 是如果 help_on 为假,则显示纹理并使 help_on 为真。如果 help_on 为真,则将其设为假,这里应该删除一个精灵。任何人都可以给我一个提示吗?我已经知道这可能不是这样做的方法,但我不知道如何以另一种方式做到这一点。

4

2 回答 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 回答