2012-12-14 145 views
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); 
} 
+0

我承担这是你的游戏更新功能。这个函数是否定期调用?如果不是,则需要查找自函数上次以来的时间,并适当调整位置变化。 –

+0

如果你按住一个键,你的意思是速度增加吗? –

回答

1

假设你在每一帧调用这个代码,你必须要考虑的时间,因为最后一帧

m_velocity += timeSinceLastFrame; 
m_position += m_velocity;