Fundos e azulejos??? Faz bastante sentido, não que você usar Backgrounds exclusivamente para os fundos dos jogos e nem as Tiles como blocos de imagem separados, mas essa é a essência.
Qualquer dúvida ou sugestão deixe nos comentários.
FLWS!
Re: [Vídeo] PGM 2.4 - #GMS: Backgrounds e Tiles
Enviado: Ter Out 25, 2016 8:37 am
por dreamaster
Muito bom! Uma dúvida quanto aos tilesets, é possível fazer tilesets animados? E sobre a colisão de um bloco invisível que vc disse. Eu posso pegar um bloco invisível com colisão de tamanho 32x32 por exemplo, e posso esticar ele na room por cima dos tilesets sem ter algum bug de colisão futuramente?
Re: [Vídeo] PGM 2.4 - #GMS: Backgrounds e Tiles
Enviado: Ter Out 25, 2016 9:55 am
por All-x
dreamaster escreveu:Muito bom! Uma dúvida quanto aos tilesets, é possível fazer tilesets animados? E sobre a colisão de um bloco invisível que vc disse. Eu posso pegar um bloco invisível com colisão de tamanho 32x32 por exemplo, e posso esticar ele na room por cima dos tilesets sem ter algum bug de colisão futuramente?
Sim, é possível animar via código. Você deve seguir alguns passos:
- Criar um tileset para cada frame, com mesmo tamanho e mesmos cortes;
- Criar um vetor/array para guardar cada frame;
- Criar variáveis de controle da animação, assim como image_index e image_speed para sprites;
- Alternar as tilesets como base na array e variáveis criadas.
Isso demanda algum processamento, então não exagere em quantidade de elementos animados.
Não importa qual frame você coloque na room, ele será animado de qualquer forma. Só a ordem que vai mudar.
E sobre bug na colisão, sempre usei blocos esticados no GM:S, pois economiza processamento já que são poucas instâncias usadas.
FLWS!
Re: [Vídeo] PGM 2.4 - #GMS: Backgrounds e Tiles
Enviado: Ter Out 25, 2016 11:41 am
por dreamaster
Nossa valeu mesmo! Uma curiosidade talvez por que ainda estou começando com gml, vi no código você usando velocidade como ".33" por exemplo. Isso seria multiplicando ou algo como "0.33"? Se for multiplicando qual seria a importância no lugar de um "5" ou "3"? Vlw!
Re: [Vídeo] PGM 2.4 - #GMS: Backgrounds e Tiles
Enviado: Ter Out 25, 2016 2:25 pm
por All-x
Pensa no seguinte, tile_index é a subimagem atual, como são duas ela é 0 ou 1, correto? Logo a gente soma o o tile_speed ao tile_index a cada evento Step, ou seja, 30 vezes por segundo.
Como o valor de tile_index deve permanecer entre 0 e 1 usamos o operador de módulo (mod) para que o valor não ultrapasse 2. Para saber mais sobre módulo visite minha aula em texto sobre operações matemáticas, é só clicar na imagem da assinatura.
Resumindo, somamos o valor 0.33 constantemente ao frame atual para criar a animação.
FLWS!
Re: [Vídeo] PGM 2.4 - #GMS: Backgrounds e Tiles
Enviado: Seg Nov 07, 2016 3:14 pm
por Eddy
Desculpa reabrir a discussão
me surgiu uma dúvida...
Situação:
Digamos que eu tenho em um mapa, uma área total de 400x400 (pixels) animada... Pergunta: é melhor usar tiles animados (que consome processamento), ou usar objetos com sprite animado?
e uma outra pergunta:
Um tile animado, como ele interage com um objeto? Digamos que um personagem caminhe por meio da grama animada... qual vai ser o resultado?
vlwwww
Re: [Vídeo] PGM 2.4 - #GMS: Backgrounds e Tiles
Enviado: Seg Nov 07, 2016 5:10 pm
por All-x
Eddy escreveu:Desculpa reabrir a discussão
me surgiu uma dúvida...
Situação:
Digamos que eu tenho em um mapa, uma área total de 400x400 (pixels) animada... Pergunta: é melhor usar tiles animados (que consome processamento), ou usar objetos com sprite animado?
e uma outra pergunta:
Um tile animado, como ele interage com um objeto? Digamos que um personagem caminhe por meio da grama animada... qual vai ser o resultado?
vlwwww
Ambos consomem processamento, porém como a região que mencionou é pequena não afeta o desempenho consideravelmente. O número de tiles teria que ser absurdo para causa estrago.
Um tile não possui evento de colisão, lembre-se que ele é apenas um pedaço de imagem colocado na room. Mas ele tem propriedades como posição altura e largura que podem ser acessados, desde que você tenha sua ID (tige_get_x(), tige_get_width(), tige_get_x(), tige_get_heigth()) e com isso você poderia fazer um script de colisão Box-To-Box por exemplo. Novamente o desempenho pode cair.
Mas há uma forma mais rápida de detectar uma colisão simples, vou usar o exemplo da documentação do GM:S:
var tile;
// Pega o tile que está na posição do mouse no layer 1000000
tile = tile_layer_find(1000000, mouse_x, mouse_y);
// Caso realmente exista um tile nessa posição
if tile != -1
{
// O tile é deletado
tile_delete(tile);
}
O que você pode fazer é trocar a posição do mouse pela posição do player. Lembrando que é apenas 1 ponto e não a mascara de colisão do player, porém compreende todo o tile. Ou seja esse código checa se um ponto está colidindo com o tile.