我面临着如何在循环中或循环外处理击键的问题?为此,我需要阅读点击次数
w a s d 键不会在 KeyPressed 循环外处理,但会读取左箭头、上箭头等键
void Game::updateEvents()
{
sf::Event ev;
while (_window->pollEvent(ev))
{
if (ev.type == sf::Event::Closed)
{
_window->close();
}
}
if (ev.type == sf::Event::KeyPressed) std::cout << ev.key.code;
}
在游戏循环内部而不是外部读取输入事件非常重要。这是因为游戏循环通常代表游戏的主要逻辑,负责更新游戏状态和渲染图形。通过读取游戏循环内的输入事件,可以确保游戏逻辑和输入处理同步。
在您的代码中,如果窗口不是开放式的,您应该添加一个 else:
在 else 中,您可以收集玩家将按下的每个输入。这是我的一个工作示例,我使用 Inputs.h 接收来自用户的所有输入:
while (renderWindow.pollEvent(event))
{
if (event.type == Event::Closed)
renderWindow.close();
}
else
{
if (Keyboard::isKeyPressed(Keyboard::A)) inputs.moveHorizontal -= 1.0f;
}