2

オブジェクトを動かすと、開始が非常に遅くなり、その後加速し始めます。一定の速度が必要ですが、何が問題なのかわかりません

    const float m_Walkspeed = 0.1;

    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left) && m_position.x > 0)
    {
        m_velocity.x -= m_Walkspeed;
        CurrentAnimation = &AnimationLeft;
    }

    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right) && m_position.x < 800) 
    {
        m_velocity.x += m_Walkspeed;
        CurrentAnimation = &AnimationRight;
    }

    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up) && m_position.y > 0) 
    {
        m_velocity.y -= m_Walkspeed;
        CurrentAnimation = &AnimationUp;
    }

    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down) && m_position.y < 560) 
    {
        m_velocity.y += m_Walkspeed;
        CurrentAnimation = &AnimationDown;
    }

    m_position += m_velocity;
    m_velocity = sf::Vector2f(0, 0);
    CurrentAnimation->setPosition(m_position);
}
4

1 に答える 1

1

各フレームでこのコードを呼び出すと仮定すると、最後のフレームからの時間を考慮する必要があります。

m_velocity += timeSinceLastFrame;
m_position += m_velocity;
于 2012-12-14T08:49:52.330 に答える