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 回答