Uma das coisas mais trabalhosas para fazer é criar níveis, mas na Unity podemos usar diversos recursos que podem facilitar nossa vida.
Um deles é a possibilidade de usarmos mapas pixelados para criar um nível em nosso jogo.

Mapas pixelados são mapas onde criamos uma textura e cada pixel representa um elemento diferente do jogo.
Nesse exemplo acima, o que está em branco é o espaço vazio, o que está em preto é uma plataforma e o que está em vermelho são os prêmios.
Agora que temos o mapa o que precisamos fazer é transformar isso em um nível na Unity.
Criando os prefabs
O primeiro de tudo precisamos criar um prefab para cada cor que vamos colocar no tilemap.
Branco = Espaço vazio
Preto = Plataforma
Vermelho = Prêmio
Criando o Script
Agora vamos criar um Script que vai identificar a cor do tilemap e criar o prefab correspondente.
public Texture2D map;
public Color[] Cores;
public GameObject[] Prefab;
void Start() {
GenerateLevel();
}
void GenerateLevel() {
for(int x = 0; x < map.width; x++){
for(int y = 0; y < map.height; y++){
GenerateTile(x,y);
}
}
}
void GenerateTile(int x, int y){
Color PixelColor = map.GetPixel(x,y);
for(int i = 0; i < Cores.Length; i++) {
if(Cores[i] == PixelColor){
Instantiate(Prefab[i], new Vector2(x,y), transform.rotation);
}
}
}
Nesse Script vamos colocar o nosso tilemap como um Texture2D, identificar cada um dos pixels dele e no GenerateTile vamos criar cada um dos prefabs que colocamos na lista das cores.
É importante nós colocarmos na lista de cores o correspondente a lista de prefabs.
0 – Preto = Plataforma
1 – Vermelho = Prêmio
O espaço vazio não precisa ser colocado.
Script avançado
Também vamos colocar um script avançado para aqueles que tem mais experiência com programação:
public Texture2D map;
public variavel[] Tile;
[Serializable]
public class variavel
{
public GameObject Prefab;
public Color[] Cores;
}
void Start() {
GenerateLevel();
}
void GenerateLevel() {
for(int x = 0; x < map.width; x++){
for(int y = 0; y < map.height; y++){
GenerateTile(x,y);
}
}
}
void GenerateTile(int x, int y){
Color PixelColor = map.GetPixel(x,y);
for(int i = 0; i < Cores.Length; i++) {
if(Cores[i] == Tile.PixelColor){
Instantiate(Tile.Prefab[i], new Vector2(x,y), transform.rotation);
}
}
}
Quer aprender desenvolvimento de jogos?
Siga o nosso blog: www.crieseusjogos.com.br
Temos vídeos toda semana em nosso canal do Youtube: Crie seus jogos – Youtube

E também baixe gratuitamente: os passos para desenvolver jogos de sucesso
Seja o primeiro a comentar.