Я пытаюсь создать игрока, который прыгает и двигается влево и вправо.
В данный момент игрок прыгает бесконечно на месте или движется бесконечно влево или вправо при нажатии соответствующих клавиш.
Что мне нужно добавить к этому коду, чтобы персонаж перестал прыгать или двигаться после отпускания клавиши?
Вот код на данный момент:
void Character::update()
{
b2Vec2 pos = m_body->GetPosition();
setPosition(pos.x, pos.y);
float angle = m_body->GetAngle()* RAD2DEG;
setRotation(angle);
if (m_movingStates[LEFT])
{
m_body->ApplyLinearImpulseToCenter(b2Vec2(-0.03, 0.0f), true);
}
if (m_movingStates[RIGHT])
{
m_body->ApplyLinearImpulseToCenter(b2Vec2(0.03, 0.0f), true);
}
if (m_movingStates[JUMP] && m_sit)
{
m_body->ApplyLinearImpulseToCenter(b2Vec2(0.f, -0.1f), true);
}
}
void Character::onKeyPress(sf::Event event)
{
if (event.key.code == sf::Keyboard::Left)m_movingStates[LEFT] = true;
if (event.key.code == sf::Keyboard::Right)m_movingStates[RIGHT] = true;
if (event.key.code == sf::Keyboard::Space)m_movingStates[JUMP] = true;
}
void Character::onKeyRelease(sf::Event event)
{
if (event.type == sf::Event::KeyReleased && event.key.code == sf::Keyboard::Left) m_movingStates[LEFT] = false;
if (event.type == sf::Event::KeyReleased && event.key.code == sf::Keyboard::Right) m_movingStates[RIGHT] = false;
if (event.type == sf::Event::KeyReleased && event.key.code == sf::Keyboard::Space) m_movingStates[JUMP] = false;
}