0

所以我为我正在制作的游戏制作了一个精灵表动画,但由于某种原因它落后于我的游戏很多。

精灵表是一个 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 只是加载表格,没有动画:点击我!

带有动画表的 FPS:点击我!

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

在使用 C++ 编程时,我仍然是一个完全的新手,所以请多多包涵。

话虽如此,我很感激任何和所有的建议,在此先感谢!

4

1 回答 1

3

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

您每次都在复制纹理。这可能是性能瓶颈。请改用 (const) 引用。

我的一般建议:使用分析器来了解您的程序在哪个功能上花费了多少时间。这样你就可以直接知道在哪里看。

于 2013-10-18T21:17:49.923 回答