Последние две недели я работал над забавным проектом, игрой. На данный момент, я только что дошел до точки, когда релизы стабильны, и никаких ошибок нет. Кроме одного. И это очень раздражает — тем более, что я понятия не имею, что происходит.
По сути, я использую функцию SFML isKeyPressed, чтобы проверить, нажата ли клавиша, и событие Event :: KeyPressed, чтобы проверить наличие клавиш.
Ошибка заключается в том, что если игрок движется (клавиша удерживается нажатой), а пользователь перемещает мышь, и во время движения мыши отпускает клавишу (клавиша больше не нажимается), игрок будет продолжать двигаться, пока что-то явно не заблокируется его от этого.
Эта серия событий воспроизводима, поэтому это должен быть не мой код, а способ, которым SFML обрабатывает события.
Кто-нибудь знает какие-либо хорошие решения этой проблемы?
(И в некоторой степени связано с этим — если пользователь «держит» окно игры, игра зависает, и мне бы очень хотелось, чтобы этого не произошло).
Если потребуется какой-либо код или более подробная информация (скриншоты и т. Д.), Я с радостью предоставлю. Спасибо!
Если вы хотите проверить наличие ключевых выпусков, вы должны использовать Событие :: KeyReleased событие, а не Событие :: KeyPressed, ты не думаешь?
Но пока вы используете isKeyPressed, вам не нужно проверять, отпущена ли клавиша: просто перемещайте проигрыватель в каждом кадре, в котором нажата ваша клавиша.