我在使用GLFW的输入系统时遇到了困难,弄清楚如何让它按照我想要的方式工作,所以我来到了有更多智慧经验的人.使用GLFW 3.
有3种状态0释放,1按和2重复.这正是我想要的,只有从按下到重复的关键状态需要大约一秒钟才能改变.理想情况下,我希望它只有1帧状态"按",然后变为重复状态.
目标:能够根据我的密钥的状态轻松调用函数,如下所示:
按Tap(做一次)
重复连续(每帧都做)
释放不要回应
请查看上面链接中的文件,如果还有其他方法,请告诉我.或者这种做法本身就是垃圾,我这样做的方式是什么?谢谢大家,所有反馈和帮助相关.
“按下”和“重复”之间有一个延迟非常重要。大多数人无法按下和释放按键,因此您的游戏仅记录按下的按键恰好一帧。而少数有能力做到这一点的人却无法始终如一地、准确地做到这一点。
所以用户永远无法“做一次”。他们将为多个帧执行此操作。这通常是不好的。
此外,按下、按住和重复之间存在概念上的差异。按住就是按住按键时发生的情况。重复是一种由操作系统控制的功能(这就是为什么 GLFW 不提供设置重复率的方法)。按键重复通常用于文本输入(GLFW 无论如何都会通过其基于文本的回调为您处理)。
本质上,你应该忽略它。在游戏情况下,按键有 4 种可能的有用状态:未按下、刚刚按下、按住、刚刚释放。您可以根据按钮之前的状态(可以存储)和回调提供的按钮当前状态来推断这一点。
如果您只想在“刚刚按下”按钮时执行操作,那么您需要知道在前一帧中没有按下该按钮。如果现在按下该键但未在前一帧中按下该键,则执行该操作。