Как учесть расстояние между плитками в плиточном листе

В моем листе плитки есть плитки размером 64x64, однако между каждой плиткой есть промежуток в 10 пикселей, и мне нужно учитывать этот промежуток при установке прямоугольника текстуры на изображении, чтобы нарисовать эту плитку.

Я попытался просто добавить пространство при установке прямоугольника текстуры, но изображение все еще выглядит искаженным.

for (auto y = 0u; y < map.getTileCount().y; ++y)
            {
                for (auto x = 0u; x < map.getTileCount().x; ++x)
                {
                    auto posX = static_cast<float>(x * map.getTileSize().x); 
                    auto posY = static_cast<float>(y * map.getTileSize().y);
                    sf::Vector2f position(posX, posY);

                    tileSprite.setPosition(position); 

                    auto tileID = tiles[y * map.getTileCount().x + x].ID; //the id of the current tile

                    if (tileID == 0)
                    {
                        continue; //empty tile
                    }

                    auto i = 0;
                    while (tileID < tileSets[i].getFirstGID())
                    {
                        ++i;
                    }

                    auto relativeID = tileID - tileSets[i].getFirstGID(); 

                    auto tileX = relativeID % tileSets[i].getColumnCount();
                    auto tileY = relativeID / tileSets[i].getColumnCount();

                    textureRect.left = tileX * tileSets[i].getTileSize().x; //i am guessing this is where
                    // i should account for the spacing 
                    textureRect.top = tileY * tileSets[i].getTileSize().y;

                    tileSprite.setTexture(mTextureHolder.get(Textures::SpriteSheet));
                    tileSprite.setTextureRect(textureRect);

                    mMapTexture.draw(tileSprite);
                }
            }

Сам код работает и рисует плитки правильного размера. Если я использую обычный набор плиток 64x64 без промежутков, окончательное изображение выглядит правильно, однако с включенным интервалом плитки вырезаются. Как добавить зазор между плитками при установке прямоугольника текстуры?

вот как это выглядит:

вот как это должно выглядеть:

(ПРИМЕЧАНИЕ. Изображение «как это должно выглядеть» взято из редактора Tiled)


person Wiz    schedule 10.07.2019    source источник
comment
Было бы проще изменить лист плиток, чтобы удалить эти пробелы? Существует ряд причин, по которым стандартной практикой является сохранение всех плиток на листе как можно более компактными (включая простоту обработки, как вы выяснили).   -  person 0x5453    schedule 10.07.2019
comment
Вы правы, мне удалось найти скрипт python для gimp и использовать его для удаления всех пробелов, теперь все работает отлично!   -  person Wiz    schedule 10.07.2019


Ответы (1)


Удаление пробелов с помощью скрипта python, который я нашел, и gimp устранил проблему, однако, если кто-то знает, как учесть интервал, не стесняйтесь отвечать, так как он мне когда-нибудь может понадобиться

person Wiz    schedule 10.07.2019