我正在编写一个游戏并且我一直在尝试实现暂停游戏功能,当用户按下R时游戏将暂停,并且在再次按下R的x时间之后,游戏将恢复。当用户按下R时,我已经开始工作了,当按下任何其他键如M时,游戏将恢复正常。但是,当我将R分配给暂停和取消暂停事件时,暂停和未暂停都会检测到初始R,并且游戏会暂停几分之一秒并重新开始。我已经尝试在我的暂停循环中实现计时器和计数器,但无济于事。我真正想要做的是让用户必须等待多长时间才能再次按下R,这样可以解决问题,但由于某些原因我无法让clock.getElapsedTime
在循环内工作。为什么是这样?这是我目前的代码:
case sf::Keyboard::R:
pause = true;
break;
//pause game
clock1.restart();
while (pause)
{
//cout << clock1.getElapsedTime.asSeconds();
//if (clock1.getElapsedTime.asSeconds() > 1.0)
//{
if (sf::Keyboard::isKeyPressed(sf::Keyboard::R))
pause = false;
//}
}
答案 0 :(得分:1)
尝试在while循环之前放置 sf :: sleep(sf :: seconds(0.1)); 。我有同样的问题。不知何故,如果我为相同的字母读取isKeyPressed()的值,那么它在我第二次读它时就不会改变,并且会认为它仍然被按下。在那里放置一点停顿解决了我的问题,所以如果它确实解决了你的问题。
请告诉我它是否有效,我感兴趣