如何检测一个键是否在xna中被按了多次
本文关键字:xna 检测 何检测 一个 是否 | 更新日期: 2023-09-27 18:10:42
我试图得到一个纹理切换打开和关闭当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被按下并检测它是否偶数使它为假,如果它是奇数使它为真?
这段代码将切换collisionhelp布尔值的开启和关闭,但它将在每一帧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;
}
也许,这就是你需要的:
if(Keystate.IsKeyDown(Keys.F1))
{
collisionhelp = !collisionhelp;
}