#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.