Você pode adicionar um atributo simples a cada bloco que especifica seu nível.
Então, por exemplo:
tileA.layer = 0 // Will be at the bottom
tileB.layer = 1 // Will be above level 0, on top of it.
// Add tiles to layered list
List<List<Tile>> tiles = new List<List<Tile>>();
tiles[0].add(tileA);
tiles[1].add(tileB);
// Draw 'em in the right order!
void Draw(List<List<Tile>> tiles) {
foreach( var listOfTiles in tiles ) {
foreach( var tile in listOfTiles ) {
tile.draw();
}
}
Agora você pode classificar seus ladrilhos, dependendo dos valores de suas camadas e desenhá-los de baixo para cima! Isso fará com que pareça que você tem uma certa profundidade no seu jogo. A maioria dos mecanismos de blocos suporta isso. Outra coisa interessante que você pode adicionar é a transparência de suas texturas, para que você possa ver até a camada inferior.
Isso pode ser feito com a água, por exemplo - imagine a água no nível 1 e depois no fundo do oceano no nível 0. Se a textura da água for um pouco transparente, você poderá ver o fundo do oceano de cima.