如何在SFML上添加更多精灵?

时间:2018-05-14 10:27:17

标签: c++ sfml

我正在尝试制作游戏界面,并且我有一些图像文件(所有这些都是PNG)。 这些是图像文件:Tank,map,statusbar,barguage

这是我的代码

    #include <SFML/Graphics.hpp>
#include <cassert>
int main()
{
    sf::RenderWindow window(sf::VideoMode(800, 600), "SFML works!");
    sf::Texture tex;
    sf::Sprite map;
    sf::Sprite tank;
    enter code here

    assert(tex.loadFromFile("map_skybridge.png"));

    map.setTexture(tex);
    tank.setTexture(tex);

    sf::Event event;
    while (window.isOpen())
    {
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }
        window.clear();
        window.draw(map);

        window.display();
    }
    return 0;
}

我想知道如何添加更多精灵..我想把它们放在地图上。

1 个答案:

答案 0 :(得分:1)

您只需创建更多纹理对象 - 每个图像一个sf::Texture,并按照与目前相同的方式加载文件:

sf::Texture texMap;
sf::Texture texTank;

texMap.loadFromFile("map.png");
texTank.loadFromFile("tank.png");

至于绘图,有多种方法。你可以为每种类型的东西创建一个精灵,或者你可以为每个实际的游戏对象创建一个精灵(例如2个坦克使用相同的精灵或两个独立的精灵):

sf::Sprite sprMap;
sf::Sprite sprTank;

sprMap.setTexture(texMap);
sprTank.setTexture(texTank);

然后像往常一样画出你的精灵:

window.draw(sprMap);
window.draw(sprTank);

当然你可以使用sf::Sprite::setPosition()等来移动精灵。