射击按钮在游戏中触发多次而不是一次时,按空格键

Shoot button in game is triggering multiple times instead of once when hitting spacebar

本文关键字:一次 空格键 游戏 按钮 射击      更新时间:2023-10-16

我正在制作一款非常简单的太空入侵者风格的游戏。目前,我有一个fire方法,设置响应空格键,如下所示:

case VK_SPACE:
     tank.Fire();
     break;

和射击方法,使屏幕外的子弹出现在坦克后面,然后向上射击。

void Tank::Fire() {
    //Moves bullets to behind tank.
    bullets[bulletCount].SetPos(Vector2D (tank_pos.x+20, tank_pos.y+20));
    //Sets their speed vector in motion.
    bullets[bulletCount].SetSpeed(Vector2D (0, -350));
    bulletCount++; //Increment the current bullet to be used.
}

问题是一次按空格键会同时触发多个空格键。如何确保每次按压只有一次射击?

如何捕获键盘输入?如果这只是一个检查键状态的循环有一个布尔值表示天气是否这是一个新键是否按下,然后当你注意到键不再按下时清除它。如果你担心你的操作系统的自动重复,那么你想看看deboundout,基本的想法是你捕捉你得到键下事件的时间,然后与未来键下事件发生的时间进行比较,这样你就可以限制它们。

当前,您的代码可能会做类似于"shoot while空格被按下"的事情。你想要的是"如果空格被按下,但之前没有按下"。

所以,基本上,你必须从一帧保存到另一帧的空间状态并检查前一帧是否按下了空间