Вход камеры GLFW C

#c #glfw

#c #glfw

Вопрос:

У меня возникли небольшие проблемы с тем, чтобы заставить камеру OpenGL делать то, что я хочу. Когда я захочу, чтобы он остановился, он замедлится, но не остановится немедленно.
Для медленного продвижения вперед,

 if(glfwGetKey(window, GLFW_KEY_W) == GLFW_PRESS) position  = speed * orientation;  

Но у меня нет идеи, как заставить его остановиться медленно, кроме как немедленно остановиться.
Заранее благодарю вас за ваш ответ!

Ответ №1:

Вы можете создавать клавиши, влияющие на ускорение, а не на скорость. При нажатии клавиши камера ускоряется, когда она не нажата, камера замедляется, что-то вроде этого:

 if (glfwGetKey(window, GLFW_KEY_W) == GLFW_PRESS) {  speed  = acceleration; } else {  speed -= acceleration; }  

Вам нужно будет обрезать скорость до определенных значений:

 if (speed lt; 0.0) {  speed = 0.0; } else if (speed gt; MAX_SPEED) {  speed = MAX_SPEED; }  

а затем вы будете обновлять позицию на каждом тике, используя текущую скорость:

 position  = speed * orientation;  

Комментарии:

1. Привет, спасибо за ваш ответ! Но у меня есть небольшой вопрос здесь, когда я отпустил ключ, он не переходит к утверждению else.