您好我的密钥处理程序出了问题。我非常想要一个函数来检测是否按下了一个键。
public bool keyHandler(Keys key)
{
if(key != null) {
if (Keyboard.GetState().GetPressedKeys() == key)
{
return true;
} else {
return false;
}
} else { return false; }
}
问题在于
if (Keyboard.GetState().GetPressedKeys() == key)
我不知道如何检查某个键是否被按下以及如何在该功能中传递该键。
我得到的错误:"运营商' =='不能应用于Microsoft Xna.Framework.Input.Keys []和Microsoft.Xna.Framework.Input.Keys"类型的oparands。 使用C#和XNA
我不知道为什么这不起作用..有人可以帮助我吗?
答案 0 :(得分:2)
将GetState()
用于新对象;)
KeyboardState ks = Keyboard.GetState();
MouseState ms = Mouse.GetState();
if (ms.LeftButton == ButtonState.Pressed)
{
DoWhatEver();
}
if (ks.IsKeyDown(Keys.Space))
{
AnimateShooting();
}
答案 1 :(得分:2)
KeyboardState.GetPressedKeys()
返回一组键(Keys[]
)。它基本上可以获得所有按键,如果您有某种键管理器或文本框或其他东西,这很方便。
你需要的是这样的东西(就像塞巴斯蒂安L所说的那样):
KeyboardState ks = Keyboard.GetState(); // get the keyboard's state
if (ks.IsKeyDown(Keys.A))
{
DoSomeReallyInterestingStuff();
}
如果密钥关闭, ks.IsKeyDown(Keys key)
将返回true。
所以这是一个更好的方法:
class InputManager
{
KeyBoardState state;
// call every update
public void Update()
{
state = Keyboard.GetState();
}
public bool IsKeyDown(Keys key)
{
return state.IsKeyDown(key);
// or return key == null ? false : state.IsKeyDown(Keys.key);
// but you would never call this method with a null key, that'd be stupid.
}
}