Ответ в теме: при одновременном нажатии двух кнопок персонаж быстрее двигается

SFML и C++ Уроки \ Разработка игр Форумы SFML System, Window и другие вопросы при одновременном нажатии двух кнопок персонаж быстрее двигается Ответ в теме: при одновременном нажатии двух кнопок персонаж быстрее двигается

#593
MicroSDA
MicroSDA
Участник
Сообщений:64

Зарегистрирован:
24.04.2015

Репутация:22

Скорость персонажа у нас динамическая относительно времени а время в свою очередь динамическое относительно скорости процессора. Скорость меняется в зависимости от нашего времени прошедшего цикла и потом эта скорость прибавляется  к координатам то ли посредством move(); то ли setPosition(); . Обработка нажатий клавиш у нас происходит посредством множеств
if (Keyboard::isKeyPressed(Keyboard::Кнопка){// и тут  уже происходит смешение нашего персонажа и добавление к нему нашей скорости.}

Мне кажется что проблема возникает потому что все происходит за один цикл.

Пример :

Наша функция обработки нажатий кнопок()

{
//пример смещения про х.
if (Keyboard::isKeyPressed(Keyboard::Up){ move(0.1*speed/*или сразу * на time*/,0)}
if (Keyboard::isKeyPressed(Keyboard::Down){ move(0.1*speed/*или сразу * на time*/,0)}
if (Keyboard::isKeyPressed(Keyboard::Left){ move(0.1*speed/*или сразу * на time*/,0)}
if (Keyboard::isKeyPressed(Keyboard::Right){ move(0.1*speed/*или сразу * на time*/,0)}
}

Тут и возникает наша проблема потому что при нажатии любой кнопки не что не мешает проверке нажатия другой кнопки. И происходит дополнительное домножение скорости к нашим координатам.
Как мне кажется нужно сделать так что бы выполнялось одно условия за цикл. Или посредством if else или switch.
Возможны глюки похожие на зиг загное хождение!
Или же можно перемножать на скорость вконце циклов if keyboard is pressed.