В игре присутствует модель игрока. Суть в том, что при нажатии W игрок просто летит вверх. Эта проблема решилась просто проверкой вертикальной скорости y игрока перед следующим нажатием.
if(evt.key.code == sf::Keyboard::W && playerBody->GetLinearVelocity().y == 0)
А вот как решить проблему полёта при зажатии "A" или "D"? Проверять горизонтальную скорость не вариант. При зажатии кнопки, игрок просто летит в выбранном направлении.
if(evt.key.code == sf::Keyboard::D)
playerBody->SetLinearVelocity(b2Vec2(5.0f, 0.0f));
А так же следующая проблема состоит в том, что при нажатии W+D или W+A игрок поднимается вверх, но влево-право не двигается.
if(evt.key.code == sf::Keyboard::A && evt.key.code == sf::Keyboard::W)
playerBody->SetLinearVelocity(b2Vec2(-50.0f, 50.0f));
Какие существуют решения для таких проблем?
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости