Итак, я пытаюсь нарисовать многослойную карту на основе плитки, как говорится в названии. У меня это до сих пор. Я использую плитки (32, 32). В настоящее время он рисует только один тип плитки, как всю карту плитки. Когда нужно сделать несколько разных типов плиток, чтобы сделать карту.Рисование карты на основе многослойной плитки
for (int layers = 0; layers < map.Layers.Count; layers++) {
for (var i = 0; i < map.Layers[layers].Tiles.Count; i++) {
int gid = map.Layers[layers].Tiles[i].Gid;
if (gid != 0) {
int tileFrame = gid - 1;
int row = tileFrame/(map.Height/tileHeight);
float x = (i % map.Width) * map.TileWidth;
float y = (float)Math.Floor(i/(double)map.Width) * map.TileHeight;
Rectangle tilesetRec = new Rectangle(0, 0, 32, 32);
for (int j = 0; j < tileSets.Count; j++) {
for (int k = 0; k < tileSets[j].Tiles.Count; k++) {
spriteBatch.Draw(tileSets[j].Tiles[k].Image.Texture, new Rectangle((int)x, (int)y, 32, 32), Color.White);
}
}
}
}
}
Это не совсем мой код, это чей-что я пытался построить по-видимому, он работал на человек для нанесения одного слоя. Исходный код:
for (var i = 0; i < _map.Layers[0].Tiles.Count; i++) {
int gid = _map.Layers[0].Tiles[i].Gid;
// Empty tile, do nothing
if (gid == 0) {
} else {
int tileFrame = gid - 1;
int row = tileFrame/(_tileset.Height/_tileHeight);
float x = (i % _map.Width) * _map.TileWidth;
float y = (float)Math.Floor(i/(double)_map.Width) * _map.TileHeight;
Rectangle tilesetRec = new Rectangle(_tileWidth * tileFrame, _tileHeight * row, 32, 32);
spriteBatch.Draw(_tileset, new Rectangle((int)x, (int)y, 32, 32), tilesetRec, Color.White);
}
}
'Я не совсем уверен, что я делаю неправильно'. Пожалуйста, просмотрите [ask] и затем [edit] ваш вопрос, чтобы включить * конкретную * проблему. –
Попробуйте отладить? Это будет быстрее, чем задавать вопрос –