射击按钮在游戏中触发多次而不是一次时,按空格键
Shoot button in game is triggering multiple times instead of once when hitting spacebar
我正在制作一款非常简单的太空入侵者风格的游戏。目前,我有一个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空格被按下"的事情。你想要的是"如果空格被按下,但之前没有按下"。
所以,基本上,你必须从一帧保存到另一帧的空间状态并检查前一帧是否按下了空间
相关文章:
- 我是否需要在下一次转移时将所有权*转移回转移队列
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 在C++中一次将矢量值写入多个文件
- 循环中的条件:为什么每次都调用strlen(),而vector.size()只调用一次
- 为什么 zlib 放气初始化调用一次不起作用?
- 在一次迭代中从 txt 文件中读取多行
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- 在头文件和 cpp 文件中使用一次 #pragma 时出现结构重定义错误
- 有没有办法一次声明相同类型的多个对象,并通过一个表达式立即使用相同的右值初始化它们?
- 高级选择排序 - 在一次迭代中搜索两个元素
- 具有相同特征的两个对象是否只在内存中存储一次?无论定义它们的函数是什么,都是不同的
- 如何仅使用一次固定<<设置精度(2)?或者至少恢复到默认行为?
- 什么是仅调用一次并调用参数的控制台应用
- 如何确保用户在一行上提示输入一次时输入名字和姓氏?
- 在unordered_multimap中精确迭代一次每个键的有效方法
- 如何一次打印带有空格的整个wchar_t?(C++)
- 使用 GLFW 一次处理多个键输入
- 如何检测相同的键盘键只按一次
- 射击按钮在游戏中触发多次而不是一次时,按空格键
- 一次C++打印多个相等键的值