Движение игрока в Box2D после прыжка

340
16 января 2017, 20:34

В игре присутствует модель игрока. Суть в том, что при нажатии 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));

Какие существуют решения для таких проблем?

READ ALSO
Имеется ли число в enum

Имеется ли число в enum

Программа читает число с flash-памяти внешнего устройства (целое, 1 байт, беззнаковое)Для его программной интерпретации используется перечисление:

369
Указатели, следующее значение

Указатели, следующее значение

Вывод значений массива, получить 4 элемента по очереди, результат

281
Имеют ли смысл указатели на ф-ции класса?

Имеют ли смысл указатели на ф-ции класса?

Недавно столкнулся с одной непонятной для меня вещью - указатели на функции классаИмеют ли они смысл ? В каких случаях используются ? Пример:

342
Помогите создать SQL запрос

Помогите создать SQL запрос

Есть 2 таблицыparam_price:

323