所以我的tileset渲染有这个问题。解释起来有点棘手,但我会尽我所能。
基本上我所做的是从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
地形设置: http://puu.sh/9Tv2X/7938b6abf4.png
所以当我渲染这个图块集中第一行中的所有图块时,数字1-4(因为图块集长度为4个图块),它可以正常工作,但过去的任何图片都会在图像外部被裁剪。
因此,我需要Y位置增加并在每次超出tileset宽度(32 *(tileNumber - 1))时重置X位置,但我的大脑无法弄清楚如何执行此操作。
瓷砖宽度和高度为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();
}
}
}
}