计时器不会在sfml函数中重置

时间:2014-12-27 17:56:15

标签: c++ sfml

void strzalObcy(sf::Clock clock, sf::Sprite pociskSprite,sf::RenderWindow &window,int przesuniecie ){
    sf::Time timer = clock.getElapsedTime();
    std::cout << timer.asSeconds() << std::endl;
    if (timer.asSeconds() >= 1.0f )
    {
        pociskSprite.setPosition(100,przesuniecie);
        window.draw(pociskSprite);
        przesuniecie+=50;
        clock.restart();
    }
}

不幸的是我的时钟没有重置,我不知道为什么,我真的不知道如何解决它:/ Window在100,50

中只绘制了一次pociskSprite

2 个答案:

答案 0 :(得分:0)

您的功能采用,而非参考,因此您重置副本而不是原始副本

答案 1 :(得分:0)

void strzalObcy(sf::Clock& clock, sf::Sprite pociskSprite,sf::RenderWindow &window,int przesuniecie ){
    sf::Time timer = clock.getElapsedTime();
    std::cout << timer.asSeconds() << std::endl;
    if (timer.asSeconds() >= 1.0f )
    {
        pociskSprite.setPosition(100,przesuniecie);
        window.draw(pociskSprite);
        przesuniecie+=50;
        clock.restart();
    }
}

正如Hiura所说,你的函数需要一个值,而不是一个引用。使用&amp;传递引用而不是值。