换档键的行为与GLFW中的其他行为不同

时间:2018-04-30 20:48:47

标签: c++ graphics keyboard glfw

我正在将GLFW用于3D图形应用程序。我正在尝试实现正常的移动方案,其中WASD是水平移动,空间上升,移位下降。

除了在按下时返回所有键,但是只有在按下时才会返回一次,在释放时只返回一次。

这意味着如果我按住空格,我会不断向上移动直到我放开钥匙。

但是如果我按住并按下按钮我会稍微下降,我会停下来而不动,直到我释放然后我移动一点。

我的关键回调如下(c是相机对象):

#define CAM_SPEED 0.2f
void static key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
{
    if(key == GLFW_KEY_W)
    {
        c.translateForward(CAM_SPEED);
    }
    if(key == GLFW_KEY_S)
    {
        c.translateForward(-CAM_SPEED);
    }
    if(key == GLFW_KEY_A)
    {
        c.translateSideways(-CAM_SPEED);
    }
    if(key == GLFW_KEY_D)
    {
        c.translateSideways(CAM_SPEED);
    }
    if(key == GLFW_KEY_SPACE)
    {
        c.translate(vec3(0,1,0)*CAM_SPEED);
    }
    if(key == GLFW_KEY_LEFT_SHIFT)
    {
        c.translate(vec3(0,-1,0)*CAM_SPEED);
    }
}

所以所有键的代码基本相同,所以我不明白为什么shift的行为不同。

0 个答案:

没有答案