SpriteSheet动画 - >落后?

时间:2013-10-18 16:58:00

标签: c++ animation sprite sfml

所以我为我正在制作的游戏制作了一张精灵表,但由于某些原因,我的游戏很多都停滞不前。

精灵表是一个1248x120 .png文件,每个精灵的大小为156x120像素。

我正在使用动画制作代码:

    void Entity::AnimateHorizontal(sf::Texture tex, int width, int hight)
    {
    sprite.setTextureRect(sf::IntRect(source.x * width, 0, width, hight));
    frameCounter += frameSpeed * frameTimer.restart().asSeconds();
    if (frameCounter >= switchFrame)
        {
            frameCounter = 0;
            source.x++;
            if (source.x * width >= tex.getSize().x) source.x = 0;
        }
}

Object.AnimateHorizontal(tex_Mech1Feet,156,120);

在我的游戏循环中。

FPS只是加载工作表,没有动画:Click me!

动画片材的FPS:Click me!

另请注意,这是我目前在游戏中实际做的唯一事情,所以绝对不应该这么糟糕。

在使用C ++进行编程时,我仍然是一个完整的新手,所以请耐心等待。

话虽如此,我提前感谢任何建议!

1 个答案:

答案 0 :(得分:3)

  

void Entity::AnimateHorizontal(sf::Texture tex, int width, int hight)

每次都要复制纹理。这可能是性能瓶颈。改为使用(const)引用。

我的一般建议:使用分析器知道您的程序在哪个功能中花费了多少时间。通过这种方式,您可以直接了解

相关问题