прыжок персонажа box2d останавливает движение оси x - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь создать базовый c 2d платформер для университетского проекта.

Я создал динамическую форму игрока c. Код, который у меня есть в настоящее время, позволяет мне двигаться влево и вправо, а также прыгать, когда на земле, как мне и нужно.

Однако, когда игрок приземляется от прыжка, он останавливается на месте, вместо продолжения движения влево или вправо соответственно.

Вот мой код движения игрока:

void Character::onKeyPress(sf::Event event)
{
    if (event.key.code == sf::Keyboard::Right)
    {
        m_body->ApplyLinearImpulseToCenter(b2Vec2(0.03f, 0.f), true);
    }

    if (event.key.code == sf::Keyboard::Left)
    {
        m_body->ApplyLinearImpulseToCenter(b2Vec2(-0.03f, 0.f), true);
    }

    if (event.key.code == sf::Keyboard::Space)
    {
        if (m_sit == true)
        {
            m_body->ApplyLinearImpulseToCenter(b2Vec2(0.f, -0.3f), true);
        }
        else m_body->ApplyLinearImpulseToCenter(b2Vec2(0.f, 0.f), true);
    }
}

void Character::onKeyRelease(sf::Event event)
{
    if (event.key.code == sf::Keyboard::Right)
    {
        m_body->ApplyLinearImpulseToCenter(b2Vec2(0.f, 0.f), true);
    }

    if (event.key.code == sf::Keyboard::Left)
    {
        m_body->ApplyLinearImpulseToCenter(b2Vec2(0.f, 0.f), true);
    }

    if (event.key.code == sf::Keyboard::Space)
    {
        if (m_sit == true)
        {
            m_body->ApplyLinearImpulseToCenter(b2Vec2(0., 0.f), true);
        }
        else m_body->ApplyLinearImpulseToCenter(b2Vec2(0.f, 0.f), true);
    }
}

Любая помощь очень ценится.

Заранее спасибо.

...