2012-12-14 148 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;