SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida Very Happy
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
Dash2D
[Tutorial]Save Load Criptografado
Ajuda com variaveis multiplas?
É assim que se começa um "novo mundo" na era medieval? kkjk
[____TÓPICO LIVRE____] FALE O QUE QUISER
[TUTORIAL] Barra de VIDA / HP contínua
R7 - GOOH (resident evil 7)
Unity 5 + um pouco de conhecimento ou Skyrim?
Teste de usuário para um jogo
Procuro vagas em equipes [Programador]
Trocar de true pra false em uma animação bool
Ajuda Movimento2D
[Duvida] Erro Criptografia AES em arquivos Json
Help minha void oncollisionenter nao funciona e nao consio encontrar o do por que :/
Converter um Gameobject para uma byte array (byte[])
Time.timeScale continua em 0
Asset de FPS - AU FPS Kit [unity 5] v1.5
Números aleatorios
[TUTORIAL] Dicas de otimização
Animacao2D
Preciso saber o ponto medio entre dois Transform
[TUTORIAL] Banco de dados || MySQL
Unity 5.5 BETA (Mudanças)
[TUTORIAL] Serialização - JSON
[TUTORIAL] Melhorar a estabilidade dos veículos com Wheel Collider
[TUTORIAL]Como colocar videos ou intros simples na unity free
[TUTORIAL] Deformar o terreno
[TUTORIAL] Scripts Básicos para Iniciantes
Qual asset comprar?
Ideias para level design 3D
Duvida Animation Play não faz nada
[TUTORIAL] Menu Pause AVANÇADO (Unity 5.3 ou superior)
Alien Planet - Atmospheric scattering test
Unity 5 Bugado
Integração PHP e Unity
Ideia Inovadora
Escolher que resoluções jogo vai ter
como usar o Lookat com o addforce do rigidibody?
[TUTORIAL] DANO POR QUEDA e BARRA DE VIDA CONTÍNUA no mesmo script
Pra que serve o [SerializeField] e por que usar ele?
script
Forma uma equipe
Baixar Documentaçao Unity 3D?
Feixe de luz - melhor forma de fazer
erro sinistro
Duvida sobre o Peso do jogo?
Alquem tem alguma ideia de como fazer o Player tipo a cabeça olhar para o seu inimigo?
Cryengine 3?
Como mudar rotacao de um objeto em relacao a posicao do outro objeto
Gostaria da opinião de vocês sobre o beta da Unity
Script
[TUTORIAL] Sistema de Escada Estilo FPS
Guitar The Legends of Brazil
[TUTORIAL] Escolher a quantos FPS (fixos) o seu jogo deverá rodar.
Examinar
Formação de Equipe Battle of Worlds
me ajudem neste script para subir escada
Texturas
script por favor me ajudem
Tem como saber o Tamanho do Objeto?
Banco de dados Aleatorio
Procuro desenhista para jogo 2D Pixel Art (Compra)
[Dúvida] Blender erro ao aplicar osso na mesh
[resolvido]enfiar float no UItext por script
Daria para pegar as horas do computador e por no jogo?
Gerador de Characters Autodesk Online
[JOGO DE FPS MULTIPLAYER] Alguém que saiba fazer animações na Unity 5 ou no blender :D
[LANÇADO] The Dilma
Inventario
The Dilma - O terror da Petrobrás
Ajuda Neste Script?
Procuro Equipe de Jogos 2D
Animações de sobra
[TUTORIAL]Singleton, A melhor forma de acessar a classe!
[TUTORIAL] Sistema de fome, sede, barra de vida, barra de estamina, itens e dano por queda
Hoje à(s) 11:57 am
Hoje à(s) 11:51 am
Hoje à(s) 3:13 am
Hoje à(s) 3:04 am
Hoje à(s) 2:01 am
Hoje à(s) 1:10 am
Hoje à(s) 1:07 am
Hoje à(s) 12:46 am
Hoje à(s) 12:30 am
Hoje à(s) 12:30 am
Hoje à(s) 12:06 am
Ontem à(s) 11:13 pm
Ontem à(s) 10:48 pm
Ontem à(s) 8:02 pm
Ontem à(s) 7:01 pm
Ontem à(s) 9:43 am
Ontem à(s) 5:31 am
Ontem à(s) 2:30 am
Ontem à(s) 1:52 am
Seg Dez 05, 2016 10:49 pm
Seg Dez 05, 2016 8:52 pm
Seg Dez 05, 2016 8:48 pm
Seg Dez 05, 2016 8:32 pm
Seg Dez 05, 2016 8:17 pm
Seg Dez 05, 2016 8:15 pm
Seg Dez 05, 2016 6:08 pm
Seg Dez 05, 2016 5:10 pm
Seg Dez 05, 2016 3:36 pm
Seg Dez 05, 2016 2:35 pm
Seg Dez 05, 2016 12:52 am
Seg Dez 05, 2016 12:01 am
Dom Dez 04, 2016 8:37 pm
Dom Dez 04, 2016 8:33 pm
Dom Dez 04, 2016 9:16 am
Dom Dez 04, 2016 7:46 am
Dom Dez 04, 2016 5:34 am
Dom Dez 04, 2016 1:55 am
Dom Dez 04, 2016 1:46 am
Dom Dez 04, 2016 1:36 am
Dom Dez 04, 2016 1:31 am
Dom Dez 04, 2016 1:11 am
Sab Dez 03, 2016 3:32 pm
Sab Dez 03, 2016 2:01 pm
Sab Dez 03, 2016 12:53 pm
Sab Dez 03, 2016 3:25 am
Sab Dez 03, 2016 3:11 am
Sab Dez 03, 2016 3:08 am
Sab Dez 03, 2016 1:59 am
Sab Dez 03, 2016 1:20 am
Sab Dez 03, 2016 1:15 am
Sab Dez 03, 2016 1:10 am
Sab Dez 03, 2016 1:08 am
Sab Dez 03, 2016 12:58 am
Sab Dez 03, 2016 12:52 am
Sab Dez 03, 2016 12:50 am
Sab Dez 03, 2016 12:04 am
Sex Dez 02, 2016 11:12 pm
Sex Dez 02, 2016 10:53 pm
Sex Dez 02, 2016 10:49 pm
Sex Dez 02, 2016 2:46 pm
Sex Dez 02, 2016 1:53 pm
Sex Dez 02, 2016 10:06 am
Sex Dez 02, 2016 1:31 am
Sex Dez 02, 2016 12:46 am
Qui Dez 01, 2016 9:28 pm
Qui Dez 01, 2016 8:42 pm
Qui Dez 01, 2016 7:08 pm
Qui Dez 01, 2016 7:06 pm
Qui Dez 01, 2016 6:44 pm
Qui Dez 01, 2016 1:45 am
Qui Dez 01, 2016 1:19 am
Ter Nov 29, 2016 9:49 pm
Ter Nov 29, 2016 2:15 pm
Ter Nov 29, 2016 12:46 pm
Ter Nov 29, 2016 12:13 pm
Thiagofogaca217
cosmoplay
Dom3000
Dom3000
Madness
Tadaora
Tadaora
Dom3000
weslleyFx
Creat Games
Weverton Borges da Silva
roger224
Manawydan
Dom3000
hetrodo_gamer
dstaroski
dimmuo
The Seven
Dom3000
Thiagofogaca217
Dom3000
artplayer
weslleyFx
RenanMSV
weslleyFx
Deiverson
John Rambo
Deiverson
Madness
Madness
vinilucas
weslleyFx
weslleyFx
AndyShow
artplayer
Madness
Marc7
Dom3000
weslleyFx
weslleyFx
weslleyFx
mafipt
dimmuo
dimmuo
Dom3000
Dom3000
Dom3000
Callyde Jr
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
Dom3000
edumoran
dstaroski
dstaroski
Dom3000
artplayer
mlmattos
rafaelllsd
weslleyFx
Extreme Craft
Édipo
weslleyFx
weslleyFx
weslleyFx
weslleyFx
weslleyFx
weslleyFx
artplayer
dimmuo
Hardencio

Desenhando um Tile Map Simples

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

DÚVIDA Desenhando um Tile Map Simples

Mensagem por ronasser em Qui Jun 04, 2015 2:05 pm

Pessoal, não achei no Fórum um tutorial bem simples sobre a melhor maneira de se desenhar tiles para um mapa topdown ou isometrico com  Unity.

Queria algo bem simples para entender o conceito e evoluir o código conforme as necessidades de projeto.

Imagino que a forma seja carregar um sprite (tileset)  no modo "Multiple" separando os tiles e depois em um loop tradicional coloca-los na cena.

Como instanciar esses tiles na cena de maneira organizada e ainda pensar em layers e colisões específicas ?!?

Se alguém puder ajudar agradeceria muito.

Roger

ronasser
Iniciante
Iniciante

PONTOS : 566
REPUTAÇÃO : 0
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Desenhando um Tile Map Simples

Mensagem por MarcosSchultz em Qui Jun 04, 2015 6:07 pm

Isso é um sistema bem complexo que depende muito mesmo do jogo que você quer fazer...

vou precisar que você especifique um pouco melhor..


O básico mesmo seria com um for, instanciar os sprites em posições inteiras, e os sprites tem que ter posições inteiras também para encaixarem um no outro, más dependendo do sistema que você quer fazer, o metodo terá que ser diferente...

se o spawn do cenário é aleatorio, se é um gerador de TileMap ou um simples metodo para desenhar um cenario fixo, etc, etc

MarcosSchultz
Administrador

Masculino PONTOS : 7141
REPUTAÇÃO : 883
Idade : 20
Áreas de atuação : Administrador do fórum
Respeito as regras :

Ver perfil do usuário http://www.schultzgames.com

Voltar ao Topo Ir em baixo

DÚVIDA Re: Desenhando um Tile Map Simples

Mensagem por ronasser em Qui Jun 04, 2015 9:25 pm

Caro Marcos,

antes de mais nada agradeço a atenção.

A intenção inicial é obter uma script bem simples desses exemplos de tilemap que existem publicados pela internet.  E, a partir desse script inicial,  ir incrementando funcionalidades. Porém como estou iniciando na Unity gostaria de fazê-lo já com as melhores práticas da engine. Gostaria do exemplo muito básico para ter facilidade no aprendizado.

Já conheço a ui básica da Unity 5 e segui alguns exemplos, instanciando objetos, carregando sprites, fazendo algumas animações e etc.

Segue a questão de forma bem objetiva:

Recursos:
- Um spritesheet com diversos tiles(32x32)
- Um arquivo Txt contendo uma matriz com os números dos tiles a serem colocados em cada posição da tela.

Arquivo Txt (4x4)

01 01 01 01
01 02 02 01
01 03 02 01
01 01 01 01

No exemplo os codigos relativos aos tiles são: 01=muro,02=grama e 03=pedra

Como elaborar uma script na unity para desenhar o mapa acima na cena de forma que resulte em um cenário ?

ronasser
Iniciante
Iniciante

PONTOS : 566
REPUTAÇÃO : 0
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Desenhando um Tile Map Simples

Mensagem por MarcosSchultz em Qui Jun 04, 2015 11:40 pm

básicamente você terá que utilizar uma matriz bidimensional:


Código:

public int[ , ] Numeros;

isto irá guardar a posição de cada número

para fazer o instantiate dos objetos, basta fazer 2 for, um para o eixo X ( linhas ) e outro par ao eixo Y ( colunas ) da matriz

a questão ainda é, o cenário que você quer é de spawn aleatório? fixo? ou com algum esquema que você defina?

MarcosSchultz
Administrador

Masculino PONTOS : 7141
REPUTAÇÃO : 883
Idade : 20
Áreas de atuação : Administrador do fórum
Respeito as regras :

Ver perfil do usuário http://www.schultzgames.com

Voltar ao Topo Ir em baixo

DÚVIDA Re: Desenhando um Tile Map Simples

Mensagem por MarcosSchultz em Sex Jun 05, 2015 12:01 am

Este é um script simples que elaborei apenas para demonstração... estou passando valores de uma Array simples para uma array Bidimensional e logo depois passo os valores dessa variavel bidimensional para uma outra array simples

básicamente assim que você vai atribuir valores pré determinados para prosseguir-mos com seu pedido:

Código:

using UnityEngine;
using System.Collections;

public class TileMap : MonoBehaviour {
   
   public int[,] Posicao = new int[4,4];
   public int[] Construcao = new int[16];

   public int [] Resultado = new int[16];

   void Update () {
      for (int x = 0; x < 4; x++) {
         for (int y = 0; y < 4; y++) {
            Posicao [x,y] = Construcao[x*4+y];
         }
      }
      //
      for (int i = 0; i < 4; i++) {
         for (int j = 0; j < 4; j++) {
            Resultado[i*4+j] = Posicao [i,j];;
         }
      }
   }
}


Entende o que se passa neste script? ( desculpe por esta pergunta, más não tenho noção do seu nível de conhecimento, por isto estou pedindo ) Very Happy

MarcosSchultz
Administrador

Masculino PONTOS : 7141
REPUTAÇÃO : 883
Idade : 20
Áreas de atuação : Administrador do fórum
Respeito as regras :

Ver perfil do usuário http://www.schultzgames.com

Voltar ao Topo Ir em baixo

DÚVIDA Re: Desenhando um Tile Map Simples

Mensagem por MarcosSchultz em Sex Jun 05, 2015 12:20 am

Sistema básico feito... ficou +/- assim:





Você define com números entre 1, 2 ou 3 os objetos que serão instanciados, em ordem ( coluna > linha ) de baixo para cima, ou seja


a sequencia { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16} na matriz " Construcao " iria gerar uma matriz assim:



| 13 14 15 16 |
| 09 10 11 12 |
| 05 06 07 08 |
| 01 02 03 04 |


O script é este básicamente Very Happy


Código:

using UnityEngine;
using System.Collections;

public class TileMap : MonoBehaviour {
   
   public int[,] Posicao = new int[4,4]; // Matriz que guarda qual objeto esta em cada posicao
   public int[] Construcao = new int[16]; // Matriz onde voce define que tipo de bloco estara em cada lugar

   public GameObject[] Objetos = new GameObject[3]; // matriz onde voce linka os objetos a serem instanciados

   void Start () {
      // ATRIBUINDO OS ITENS (DE ACORDO COM A VARIAVEL " Construcao ") A CADA POSICAO DA MATRIZ
      for (int x = 0; x < 4; x++) {
         for (int y = 0; y < 4; y++) {
            Posicao [x,y] = Construcao[x*4+y];
         }
      }
      //
      for (int i = 0; i < 4; i++) {
         for (int j = 0; j < 4; j++) {
            Vector3 posicao = new Vector3(i,j,0);
            Instantiate(Objetos[Posicao[i,j]-1],posicao,transform.rotation);
         }
      }
   }
}



se na sua matriz de " Objetos " você linkou apenas 1 objeto, a sua matriz de construcao só podera conter números " 1 "... se na sua matriz de Objetos, você linkar 3 objetos, a sua matriz de contrucao poderá ter numeros de 1 a 3, e assim vai...


Dúvidas poste ae Very Happy

MarcosSchultz
Administrador

Masculino PONTOS : 7141
REPUTAÇÃO : 883
Idade : 20
Áreas de atuação : Administrador do fórum
Respeito as regras :

Ver perfil do usuário http://www.schultzgames.com

Voltar ao Topo Ir em baixo

DÚVIDA Re: Desenhando um Tile Map Simples

Mensagem por ronasser em Sex Jun 05, 2015 1:49 am

Pow Marcos, perfeito man, ficou show de bola seu script. Nada como ter o domínio das ferramentas. Era isso mesmo q estava esperando. Vou testar aqui e posto o resultado assim que possível.

Não se preocupe com o entendimento pois compreendi bem a rotina e os loops. Tenho um conhecimento razoável de programação, sou da época dos jogos a lá z80 , processador de 8bits clock de 3,5 khz e só 16k de Ram pra fazer os jogos, geralmente em basic ou, quem fosse mais corajoso, em assembler (a linguagem dos deuses na época). Hoje ganho a vida com programação fazendo sistemas de gestão (Erps), mas sou apaixonado (sempre fui) pelo desenvolvimento de Jogos.

A matriz com os objetos posicionados irei buscar em um arquivo texto para ter a liberdade de usar qualquer editor externo. Por enquanto, como teste, vou colocar os valores na matriz no próprio script.

Uma pergunta,na função em que vc instancia os objetos passando parâmetros com as posições de cada tile vc passa números inteiros, como a unity sabe se um tile comecará exatamente ao lado do anterior , se eles tem 32x32 pixels ou outro tamanho qualquer ?

Vlw !!!!

ronasser
Iniciante
Iniciante

PONTOS : 566
REPUTAÇÃO : 0
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Desenhando um Tile Map Simples

Mensagem por MarcosSchultz em Sex Jun 05, 2015 2:06 am

Estou elaborando o sistema ainda, não está completo, más eu fiz objetos com escala 1x1 no editor, por isso estou passando parametros inteiros

na Unity não contumo trabalhar com pixels pois sempre gera problemas com a resolução dos jogadores

MarcosSchultz
Administrador

Masculino PONTOS : 7141
REPUTAÇÃO : 883
Idade : 20
Áreas de atuação : Administrador do fórum
Respeito as regras :

Ver perfil do usuário http://www.schultzgames.com

Voltar ao Topo Ir em baixo

DÚVIDA Re: Desenhando um Tile Map Simples

Mensagem por MarcosSchultz em Sex Jun 05, 2015 2:10 am

Por hora este é o script:

Código:

using UnityEngine;
using System.Collections;
public class TileMap : MonoBehaviour {
   
   public GameObject[] Objetos = new GameObject[3];
   public int Largura, Altura;
   public int[] Construcao;

   private int[,] Posicao;
   
   void Start () {

      Posicao = new int[Largura, Altura];

      for (int x = 0; x < Largura; x++) {
         for (int y = 0; y < Altura; y++) {
            Posicao [x,y] = Construcao[x*Altura+y];
         }
      }

      for (int i = 0; i < Largura; i++) {
         for (int j = 0; j < Altura; j++) {
            Vector3 posicao = new Vector3(i,j,0);
            Instantiate(Objetos[Posicao[i,j]],posicao,transform.rotation);
         }
      }
   }
}


ainda estou trabalhando nele

MarcosSchultz
Administrador

Masculino PONTOS : 7141
REPUTAÇÃO : 883
Idade : 20
Áreas de atuação : Administrador do fórum
Respeito as regras :

Ver perfil do usuário http://www.schultzgames.com

Voltar ao Topo Ir em baixo

DÚVIDA Re: Desenhando um Tile Map Simples

Mensagem por MarcosSchultz em Sex Jun 05, 2015 2:19 pm

Ta melhorando:



MarcosSchultz
Administrador

Masculino PONTOS : 7141
REPUTAÇÃO : 883
Idade : 20
Áreas de atuação : Administrador do fórum
Respeito as regras :

Ver perfil do usuário http://www.schultzgames.com

Voltar ao Topo Ir em baixo

DÚVIDA Re: Desenhando um Tile Map Simples

Mensagem por MarcosSchultz em Sab Jun 06, 2015 12:03 am

Foi o que deu pra fazer:

Código:

using UnityEngine;
using System.Collections;
public class TileMap : MonoBehaviour {
   
   public GameObject[] Objetos = new GameObject[3];
   public int Largura, Altura;
   public int[] Construcao;

   private int[,] Posicao;
   
   void Start () {

      Posicao = new int[Largura, Altura];
      if ((Largura * Altura) > Construcao.Length) {
         Debug.Log (" O tamanho da sua lista 'Construcao' deve ser de " + Largura*Altura + " unidades para evitar erros ");
      }
      for (int x = 0; x < Largura; x++) {
         for (int y = 0; y < Altura; y++) {
            Posicao [x,y] = Construcao[x*Altura+y];
         }
      }

      for (int i = 0; i < Largura; i++) {
         for (int j = 0; j < Altura; j++) {
            Vector3 posicao = new Vector3(i,j,0);
            if(Posicao[i,j] < Objetos.Length){
               Instantiate(Objetos[Posicao[i,j]],posicao,transform.rotation);
            }
            else {
               Debug.Log ("O item que voce esta tentando criar nao existe na sua variavel 'Objetos' portanto nenhum item foi criado na posicao: (" + i + ", " + j + ")");
            }
         }
      }
   }
}



Amanha faço um tuto explicando como utilizar bem certo...

MarcosSchultz
Administrador

Masculino PONTOS : 7141
REPUTAÇÃO : 883
Idade : 20
Áreas de atuação : Administrador do fórum
Respeito as regras :

Ver perfil do usuário http://www.schultzgames.com

Voltar ao Topo Ir em baixo

DÚVIDA Re: Desenhando um Tile Map Simples

Mensagem por ronasser em Sab Jun 06, 2015 4:14 pm

Legal Marcos, o resultado ta muito bom, vou testar aqui também o Script atualizado e faço minhas considerações.

A dúvida quanto ao tamanho dos tiles em pixels em relação ao posicionamento na tela através de números inteiros foi em função do meu desconhecimento da Unity. Quando vc importa um sprite tem um campo chamado "Pixels Per Unit" que eu desconhecia , o preenchimento correto desse campo (32 no meu caso) resolve o "mistério" Smile

Vlw.


ronasser
Iniciante
Iniciante

PONTOS : 566
REPUTAÇÃO : 0
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Desenhando um Tile Map Simples

Mensagem por MarcosSchultz em Sab Jun 06, 2015 5:02 pm

Na verdade eu criei quads e adicionei as texturas a eles... um Quad tem como tamanho padrão 1x1, o que facilita muito e também tem uma geometria MUITO leve, proximo a de um sprite, entao é vantagem usa-los

MarcosSchultz
Administrador

Masculino PONTOS : 7141
REPUTAÇÃO : 883
Idade : 20
Áreas de atuação : Administrador do fórum
Respeito as regras :

Ver perfil do usuário http://www.schultzgames.com

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum