0

我试图让纹理在按下 F1 键时打开和关闭,我可以让它打开,但除非我使用单独的键这样做,否则它不会再次关闭。

这对我有用:

    if(Keystate.IsKeyDown(Keys.F1))
     {
       collisionhelp = true;
     }

然后我做:

    if(Keystate.IsKeyDown(Keys.F2))
     {
       collisionhelp = false;
     }

但我想要的是第二次按下 F1,然后将其设置为 false,但目前这导致它根本不显示。

我试过这个:

    if(Keystate.IsKeyDown(Keys.F1))
     {
       collisionhelp = true;

        if(collisionhelp == true && Keystate.IsKeyDown(Keys.F1))
         {
           collisionhelp = false;
         }
     }

根本没有骰子,按钮甚至不再做任何事情。

在 XNA 中必须有一种方法可以做到这一点,也许每次按下 F1 时将一个整数加 1 并检测它是否为偶数以使其为假,如果它为奇数以使其为真?

4

2 回答 2

1

此代码将打开和关闭碰撞帮助布尔值,但它会在按住 F1 键的每一帧发生。

if(Keystate.IsKeyDown(Keys.F1))
{
    collisionhelp = !collisionhelp;
}

因此,如果您以 60fps 的速度运行并按住 F1 键 1 秒钟,它将打开和关闭碰撞帮助 30 次。

我认为您想要的是第二个布尔值来记录是否在前一帧中按下按钮并且每次按下 F1 时仅切换一次碰撞帮助:

if(Keystate.IsKeyDown(Keys.F1))
{
    if(!f1AlreadyDown)
    {
        f1AlreadyDown = true;
        collisionhelp = !collisionhelp;
    }
}
else
{
    f1AlreadyDown = false;
}
于 2013-04-25T07:43:53.447 回答
0

也许,这就是你需要的:

if(Keystate.IsKeyDown(Keys.F1))
{
   collisionhelp = !collisionhelp;
}
于 2013-04-24T22:58:11.930 回答