我正在将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的行为不同。