2026-03-26 16:45:24 +08:00
|
|
|
# InputManager::IsKeyPressed
|
|
|
|
|
|
2026-03-26 17:39:53 +08:00
|
|
|
查询一个键是否在本帧刚被按下。
|
2026-03-26 16:45:24 +08:00
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
bool IsKeyPressed(KeyCode key) const;
|
|
|
|
|
```
|
|
|
|
|
|
2026-03-26 17:39:53 +08:00
|
|
|
## 行为说明
|
2026-03-26 16:45:24 +08:00
|
|
|
|
2026-03-26 17:39:53 +08:00
|
|
|
当前实现判断条件是:
|
2026-03-26 16:45:24 +08:00
|
|
|
|
2026-03-26 17:39:53 +08:00
|
|
|
```cpp
|
|
|
|
|
m_keyDownThisFrame[index] && !m_keyDownLastFrame[index]
|
|
|
|
|
```
|
2026-03-26 16:45:24 +08:00
|
|
|
|
2026-03-26 17:39:53 +08:00
|
|
|
所以它表示的是“从上一帧到当前帧的按下边沿”。要得到正确结果,必须保证 [Update](Update.md) 每帧只在固定边界调用一次。
|
2026-03-26 16:45:24 +08:00
|
|
|
|
2026-03-26 17:39:53 +08:00
|
|
|
## 参数
|
|
|
|
|
|
|
|
|
|
- `key` - 要查询的键。
|
2026-03-26 16:45:24 +08:00
|
|
|
|
2026-03-26 17:39:53 +08:00
|
|
|
## 返回值
|
|
|
|
|
|
|
|
|
|
- `bool` - 当前帧是否刚按下。
|
|
|
|
|
|
|
|
|
|
## 示例
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
if (XCEngine::Input::InputManager::Get().IsKeyPressed(XCEngine::Input::KeyCode::Space)) {
|
|
|
|
|
// ...
|
2026-03-26 16:45:24 +08:00
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 相关文档
|
|
|
|
|
|
2026-03-26 17:39:53 +08:00
|
|
|
- [返回类型总览](InputManager.md)
|
|
|
|
|
- [Update](Update.md)
|
|
|
|
|
- [IsKeyDown](IsKeyDown.md)
|