1.4 KiB
1.4 KiB
InputManager::IsKeyPressed
查询一个键是否在本帧刚被按下。
bool IsKeyPressed(KeyCode key) const;
行为说明
当前实现判断条件是:
m_keyDownThisFrame[index] && !m_keyDownLastFrame[index]
因此它表达的是“当前帧出现了按下消息,而且上一帧没有同一个按下标记”。
这有两个直接含义:
还要特别注意当前实现不会过滤 repeat:
- ProcessKeyDown 无论
repeat是true还是false,都会把m_keyDownThisFrame[index]设为true - 因此平台如果在后续帧继续发送重复
KeyDown,IsKeyPressed()仍可能再次返回true
所以它更准确的定义是“这一帧收到按键按下消息”,而不是“严格意义上的首次物理按下”。
参数
key- 要查询的键。
返回值
bool- 当前帧是否刚按下。
示例
if (XCEngine::Input::InputManager::Get().IsKeyPressed(XCEngine::Input::KeyCode::Space)) {
// ...
}