c++ - 在按键上增加模型的加速度?
问题描述
我正在尝试在开放空间中旋转单个立方体。起初,它从静止开始,然后在按键时它应该在特定按键的特定访问中增加旋转速度。
我的初始代码如下所示:
model = glm::rotate(model, glm::radians(rotationAngle.x * glfwGetTime()), glm::vec3(1.0f, 0.0f, 0.0f));
model = glm::rotate(model, glm::radians(rotationAngle.y * glfwGetTime())), glm::vec3(0.0f, 1.0f, 0.0f));
model = glm::rotate(model, glm::radians(rotationAngle.z * glfwGetTime())), glm::vec3(0.0f, 0.0f, 1.0f)
在一般的按键上,比如 A,代码看起来像这样:
if(glfwGetKey(window, GLFW_KEY_A) == GLFW_PRESS){
rotationAngle.x += 0.01;
}
这会增加旋转速度,但由于glfwGetTime()
不断增加,当我按住键时它会非常快速地旋转,然后当未按下键时,它会恢复到正常旋转速度。
我可能做错了什么?
解决方案
您可能想使用增量时间(自上一帧以来的时间变化)而不是时间。我不确定 GLFW 是否有特定的功能,但你可以这样做:
time = glfwGetTime();
delta = time - lastTime;
// do stuff with delta ...
lastTime = time;