我正在制作一款非常简单的太空风格游戏。目前,我有一个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.
}
问题是空格键的一次物理攻击一次发射多个。如何确保每次按下只发射一次?
答案 0 :(得分:2)
你是如何捕获键盘输入的?如果这只是一个检查键状态的循环有一个表示天气的布尔值,这是一个新的键是否关闭,然后当你注意到键不再关闭时清除它。如果你担心你的操作系统自动重复,那么你想看看去抖动,基本的想法是你捕获关键事件的时间,然后比较未来关键事件发生的时间,以便你可以对它们进行速率限制。
答案 1 :(得分:1)
目前,您的代码可能正在执行“按空间时拍摄”等操作。你想要的是“如果按下空间但是没有按下框架之前按下”。
所以,基本上,你必须从一帧到另一帧保存空间状态,并检查是否按下了空格。