SFML рисует много спрайтов - PullRequest
0 голосов
/ 17 января 2020

Поэтому мне нужно нарисовать один спрайт примерно 5 раз, переместив другой спрайт на несколько пикселей вперед, чтобы они не складывались. Мой для l oop не работал, и теперь я понятия не имею, как это сделать. Я также создал класс Hero, потому что мне нужно нарисовать его спрайт только 1 раз. Когда я запускаю программу, она отображает только 1 башню на пустом месте.

int main() {
    sf::RenderWindow screen(sf::VideoMode(700, 580), "SFML Demo");
    sf::Event event;
    int posX = 0, posY = 0;
    Image TileSet;
    TileSet.loadFromFile("Town.png");
    Hero My_Hero("Orc.png");
    Texture TowerTexture;
    TowerTexture.loadFromImage(TileSet);
    Sprite Tower;
    Tower.setTexture(TowerTexture);
    Tower.setPosition(0, 0);
    Tower.setTextureRect(IntRect(383, 96, 145, 280));


    while (screen.isOpen()) {
        while (screen.pollEvent(event)) {
            if (event.type == sf::Event::EventType::Closed)
                screen.close();
        }

        screen.clear();
        for (int i = 0; i < 4; ++i) {
            screen.draw(Tower);
            posX += 40;
            Tower.setPosition(posX, posY);
        }
        My_Hero.MoveHero();
        screen.draw(My_Hero.getSprite());
        screen.display();
    }
}

1 Ответ

0 голосов
/ 17 января 2020

Ваша проблема от posX. Вы должны установить posX на ноль в каждом кадре.

Что-то вроде:

posX = 0;
for (int i = 0; i < 4; ++i) {
    screen.draw(Tower);
    posX += 40;
    Tower.setPosition(posX, posY);
}
...