Так что у меня проблема с рендерингом набора тайлов. Это немного сложно объяснить, но я сделаю все возможное.
По сути, я загружаю эти «номера плиток» из файлов TMX, и они представляют только номер набора плиток в наборе плиток. Поэтому, если я использую плитку, расположенную в строке ниже первой, я получу только номер. Но я хочу, чтобы координаты X и Y вычисляли, где я могу обрезать изображение, когда я показываю его в своей игре.
Так что мой массив будет выглядеть примерно так,
1,1,1,2,1,1,1,1,9,1,6,1,1
1,1,1,2,2,2,1,1,1,1,1,1,1
1,1,1,1,1,2,1,1,1,1,1,1,1
1,1,1,1,1,2,1,1,1,3,1,1,1
1,6,1,1,1,2,1,1,1,1,1,1,1
1,1,5,5,1,2,2,2,1,1,1,1,1
1,1,1,1,1,1,1,2,1,1,1,1,1
Tileset:
http://puu.sh/9Tv2X/7938b6abf4.png
поэтому, когда я рендерил все плитки в первой строке в этом наборе плиток с номерами 1-4 (так как набор плиток имеет длину 4 плитки), он работает нормально, но все, что осталось, обрезается за пределами изображения.
Поэтому для этого мне нужно увеличить позицию Y и сбрасывать позицию X каждый раз, когда она выходит за пределы ширины набора тайлов (32 * (tileNumber — 1)), но мой мозг не может понять, как это сделать.
ширина плитки и высота 32.
мой код для рисования Tilset:
void TileMap::Draw()
{
for (unsigned int i = 0; i < mapVector.size(); i++)
{
for (unsigned int j = 0; j < mapVector[i].size(); j++)
{
int tileY = 0;
int tileX = mapVector[i][j] - 1;
if (tileWidth * mapVector[i][j] > tilesetWidth)
{
//now what
}if (mapVector[i][j] > 0)
{
tileSprite->SetPosition(j * tileWidth, i * tileHeight);
tileSprite->SetTextureRect(tileX * tileWidth, tileY * tileHeight, 32, 32);
tileSprite->Draw();
}
}
}
}
Задача ещё не решена.