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:
Brasileiros podem usar o Unity ADS?
Recarregador de arms
Como colocar arvores configuradas pelo terrain?
Duvida de camera
Personagem em 3ª pessoa
dúvida com variáveis
Câmera tipo Uncharted
Como verificar se a animação términou no animator
Auxilio para script de Câmera
Como Que faço Para Quando Eu Reentrar no game o PlayerPrefs restaurar os dados salvos?
Desenvolvimento de game PokeGen MS - Vídeo e informações
[RESOLVIDO] Meu Script Sumiu!
[TUTORIAL] Sistema COMPLETO de câmeras
Criar varias funções de mesmo nome em um script
[____ADMINISTRADOR OFFLINE____]
JUMP no estilo Subwey surf
Iluminação unity 5
Projeto - IMU, terror de sobrevivência em primeira pessoa (estilo silent hill)
Procuro membros para minha Equipe (Programadores, designers, etc)
Galera aki tenho um site com muitos models 3d
(Dúvida) Objeto receber posição do Raycast.
COMO COLOCO LANTERNA DE LED NO MEU JOGO DE BUS
DUVIDA SCRIPT DO MARCOS SELEÇÃO DE PERSONAGEM !
[____TÓPICO LIVRE____] FALE O QUE QUISER
SOBRE "IK" INVERSE KINEMATICS
Objeto ir para raycast
Duvida como instância um game objeto com Raycast
Problema Com Virtual Buttons Help me ;-;
GALERA PRECISO DE MODELADORES ,DESIGNER E PROGAMADORES PARA A MINHA EQUIPE DE UNITY 5
sobre build run no Android
e algum bug??
Alguém Para Dar Uma Avaliada no Meu Jogo de Terror :)
Tela rosa em jogos
Ajuda na script
[ajuda] câmera puxada
Duvida de script de controle
Não carrega próxima cena após finalizar cutscene
Duvida de script avançada
[TUTORIAL] Derrubar arvores e dropar madeiras dela
Vocês poderiam avaliar meu jogo para Android? (30mb)
Ajuda com elementos UI
Ajuda com AI
Multiplayer com photon
[PEDIDO] Tutorial de Multiplayer
procuro equipe para meu jogo de bus
Formação de equipe para jogo estilo Days Gone (Campanha , Multiplayer) , (já está em criação)
AJUDA SCRIPT LUZ UNITY 5.5
3 Armas mediavais gratis, criada por min
Alguém poderia me ajudar a entender esse script
[TUTORIAL] Entrar no carro estilo GTA
Folha de Palmeira (Modelo 3D)
DESLIGAR E LIGAR O CARRO
Procuro programadores para meu jogo
Duvida sobre pulo
unity pack
PROCURO EQUIPE PARA DESENVOLVER UM GAME NO ESTILO BOMBERMAN (ANTIGOS) ENTRAR EM CONTATO
Formação de equipes Bus Brasil
[JOGO] Dead Age(Em desenvolvimento).
Vcs ja publicaram algum game ou aplicativo na playstore?
Ajuda para Criar Um Mapa que se passa em uma escola brasileira
[TUTORIAL] Sistema de inventário Sobrevivência
Novo Modelo de Espada Blender
[JOGO] The Park Life [DEMO DISPONIVEL]
Quero entrar para uma equipe.
Duvida sobre instantiate
Duvida passar de fase com objetos
[TUTORIAL] Como fazer uma Barra de Loading na Unity 5
[TUTORIAL] Alterar a velocidade de queda de um RigidBody
jogo 3D como fazer o personagem...
Problema ao atualizar o Unity 3D
[TUTORIAL] Camera orbital com zoom (scroll)
[TUTORIAL] MENU PRINCIPAL - UNITY 5 (5.3 ou superior) (Com UI)
Dúvida animation
WhellJoint 2D
Asset para estudo
Hoje à(s) 1:58 pm
Hoje à(s) 1:25 pm
Hoje à(s) 1:19 pm
Hoje à(s) 1:13 pm
Hoje à(s) 1:08 pm
Hoje à(s) 12:59 pm
Hoje à(s) 12:23 pm
Hoje à(s) 12:22 pm
Hoje à(s) 12:17 pm
Hoje à(s) 11:50 am
Hoje à(s) 10:10 am
Hoje à(s) 7:46 am
Hoje à(s) 4:58 am
Hoje à(s) 12:10 am
Hoje à(s) 12:06 am
Ontem à(s) 10:04 pm
Ontem à(s) 8:57 pm
Ontem à(s) 8:38 pm
Ontem à(s) 8:17 pm
Ontem à(s) 6:54 pm
Ontem à(s) 5:21 pm
Ontem à(s) 5:13 pm
Ontem à(s) 4:33 pm
Ontem à(s) 2:17 pm
Ontem à(s) 1:19 pm
Ontem à(s) 12:54 pm
Ontem à(s) 11:57 am
Ontem à(s) 10:16 am
Ontem à(s) 7:54 am
Ontem à(s) 7:46 am
Seg Jan 16, 2017 9:06 pm
Seg Jan 16, 2017 7:52 pm
Seg Jan 16, 2017 6:54 pm
Seg Jan 16, 2017 5:21 pm
Seg Jan 16, 2017 5:12 pm
Seg Jan 16, 2017 5:11 pm
Seg Jan 16, 2017 5:11 pm
Seg Jan 16, 2017 5:10 pm
Seg Jan 16, 2017 5:05 pm
Seg Jan 16, 2017 5:03 pm
Seg Jan 16, 2017 3:01 pm
Seg Jan 16, 2017 2:02 pm
Seg Jan 16, 2017 12:02 pm
Seg Jan 16, 2017 10:53 am
Dom Jan 15, 2017 10:14 pm
Dom Jan 15, 2017 6:31 pm
Dom Jan 15, 2017 6:03 pm
Dom Jan 15, 2017 5:54 pm
Dom Jan 15, 2017 5:17 pm
Dom Jan 15, 2017 4:30 pm
Dom Jan 15, 2017 4:24 pm
Dom Jan 15, 2017 4:16 pm
Dom Jan 15, 2017 2:52 pm
Dom Jan 15, 2017 9:40 am
Dom Jan 15, 2017 9:06 am
Dom Jan 15, 2017 12:01 am
Sab Jan 14, 2017 8:06 pm
Sab Jan 14, 2017 5:53 pm
Sab Jan 14, 2017 10:38 am
Sab Jan 14, 2017 9:06 am
Sab Jan 14, 2017 7:37 am
Sab Jan 14, 2017 7:25 am
Sab Jan 14, 2017 7:22 am
Sab Jan 14, 2017 7:21 am
Sex Jan 13, 2017 11:49 pm
Sex Jan 13, 2017 10:21 pm
Sex Jan 13, 2017 9:13 pm
Sex Jan 13, 2017 7:41 pm
Sex Jan 13, 2017 7:35 pm
Sex Jan 13, 2017 7:29 pm
Sex Jan 13, 2017 7:26 pm
Sex Jan 13, 2017 7:14 pm
Sex Jan 13, 2017 7:11 pm
Sex Jan 13, 2017 7:05 pm
Sex Jan 13, 2017 7:02 pm
Kenji Haruno
Callyde Jr
AndyShow
AndyShow
AndyShow
AndyShow
John Rambo
John Rambo
John Rambo
LegendGames
MonsaM
AndyShow
MonsaM
artplayer
John Rambo
rafaelllsd
John Rambo
mrariel2011
dstaroski
MonsaM
rafaelllsd
John Rambo
LuizFixa3D
joabr
XavezZ
lucasfera15
R R
anizioNoob
dstaroski
dstaroski
John Rambo
dstaroski
Igor Melim
MarcosSchultz
MarcosSchultz
MarcosSchultz
joabr
MarcosSchultz
MarcosSchultz
marcos4503
sabbath
Callyde Jr
artplayer
Chilinger
Manawydan
Willian Wii
Pedro Canassa Garcia
MateusWTP
Willian Wii
tom ramber
RenanMSV
tom ramber
Willian Wii
AndyShow
dstaroski
Kaiky leandro
Kaiky leandro
ismarspn
Willian Wii
GamersBR
hen000
Weverton Borges da Silva
Weverton Borges da Silva
hen000
John Rambo
Manawydan
bymaxbig
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz

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 11:05 am

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 : 608
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 3: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 : 7526
REPUTAÇÃO : 995
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 6: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 : 608
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 8: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 : 7526
REPUTAÇÃO : 995
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 Qui Jun 04, 2015 9:01 pm

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 : 7526
REPUTAÇÃO : 995
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 Qui Jun 04, 2015 9:20 pm

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 : 7526
REPUTAÇÃO : 995
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 10:49 pm

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 : 608
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:06 pm

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 : 7526
REPUTAÇÃO : 995
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 Qui Jun 04, 2015 11:10 pm

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 : 7526
REPUTAÇÃO : 995
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 11:19 am

Ta melhorando:



MarcosSchultz
Administrador

Masculino PONTOS : 7526
REPUTAÇÃO : 995
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 9:03 pm

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 : 7526
REPUTAÇÃO : 995
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 1: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 : 608
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 2: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 : 7526
REPUTAÇÃO : 995
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