首页 > 解决方案 > 如何在 SFML 上添加更多精灵?

问题描述

我正在尝试制作游戏界面,并且我有一些图像文件(它们都是PNG)。这些是图像文件:坦克、地图、状态栏、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;
}

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

标签: c++sfml

解决方案


您只需创建更多纹理对象——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()等移动精灵。


推荐阅读