Как учесть расстояние между плитками в листе плитки - PullRequest
0 голосов
/ 10 июля 2019

У моего листа листов есть плитки размером 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-редактора)

1 Ответ

0 голосов
/ 10 июля 2019

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

...