Как я могу добавить больше спрайтов на SFML? - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь создать интерфейс игры, и у меня есть несколько файлов изображений (все они в формате PNG).Это файлы изображений: танк, карта, строка состояния, баргаж

и вот мой код

    #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 голосов
/ 14 мая 2018

Вы просто создадите больше текстурных объектов - по одному 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() и т. д.

...