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