【发布时间】:2017-02-02 13:12:34
【问题描述】:
我正在编写一个游戏,并且在我的 InputHandler 类中我编写了一个 getKeyState 方法,它返回一个特定的键是否被按下(布尔值)。
在某些情况下的问题是,无论我多么努力,按下一个键总是需要“很长时间”,以至于我的 getKeyState 方法多次返回 true,因为它在每一帧都被调用。
当我需要特定的动作只执行一次时,我必须这样写:
int n = 0; // global variable
(...)
// --- inside a class method which is called every frame as well: ---
if (Input.getKeyState(key))
{
n++;
if (n == 1)
{
// specific behaviour
}
}
else
{
n = 0;
}
我现在的问题是:如何在 InputHandler 类中的方法中实现这一点。我不想每次都声明一个计数器变量,我需要一个“仅按下一次键”的方法。我只想打电话:
if (Input.isKeyPressedAndTriggerOnlyOncePls())
【问题讨论】:
-
每帧仅一次,还是每个对象每帧一次?
-
输入是单例。为了简单起见,我没有把它写在这里。
标签: c++ events input triggers keyboard