Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

[ RESOLVIDO ] Efeito Parallax usando Tiles

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
AdrianoPpaula
Membro
Membro
Reações: 0
Mensagens: 59
Localização: Quissamã RJ

Contato:

[ RESOLVIDO ] Efeito Parallax usando Tiles

Mensagem por AdrianoPpaula » Qui Out 05, 2017 4:49 pm

Fala pessoal blz, estou tendo dúvidas aqui pra implementar um efeito parallax só que dessa vez usando tiles.
Pesquisando mais a fundo conseguir achar essa maneira aqui que é bem simples porem está dando um erro quando a tela para no final da room teoricamente era para os tiles pararem de se moverem mas eles continuam. Tentei então usar a lógica do pessoal que me ajudaram com parallax com objetos porem não serve. Então viu explicar melhor agora:

Tópico do efeito parallax com objetos (tentei usar isso nos tiles mas não consegui)
https://tgmbrasil.com.br/viewtopic.php?f=108&t=1623&p=6525&hilit=parallax#p6525 

- TENTATIVA 1 - 

No step de algum objeto control

Código: Selecionar todos

if view_xview>0 and view_hspeed !=0 {
    // FRENTE
    tile_layer_shift(-1,0+(-player.hspeed/150),0);

    // FRENTE 2
    tile_layer_shift(-2,0+(-player.hspeed/250),0);

    // FRENTE 3
    tile_layer_shift(-3,0+(-player.hspeed/150),0);

}
Resultado: Ficou bom porem ficou meio descontrolado pelo fato de usar a hspeed do personagem, percebi que se eu ficasse andando muito tempo pela room os tiles não ficaram posicionados certinho indo cada vez mais para o lado do que para o outro e sem falar também que quando a camera parava, quando chegava perto do final da room onde  a câmera pare de se movimentar os tiles continuavam se mexendo =/

- TENTATIVA 2 -

Código: Selecionar todos

if  view_xview[0]>0 and view_hspeed[0] !=0 {
  // FRENTE
  tile_layer_shift(-1,0+(view_hspeed[0]/150),0);
  // FRENTE 2
  tile_layer_shift(-2,0+(view_hspeed[0]/250),0);
  // FRENTE 3
  tile_layer_shift(-3,0+(view_hspeed[0]/150),0);
}
Resultado: Dessa maneira os tiles não param o_O
Editado pela última vez por AdrianoPpaula em Qua Out 11, 2017 10:16 am, em um total de 2 vezes.
Imagem

Avatar do usuário
All-x
Administrador
Administrador
Reações: 8
Mensagens: 621
Localização: Dourados-MS

Contato:

Re: [50%] Efeito Parallax usando Tiles

Mensagem por All-x » Sáb Out 07, 2017 6:35 pm

Bom, você vai ter que calcular a velocidade da view. A variável view_hspeed geralmente fica com o valor -1 para seguir o objeto instantaneamente, ou seja, se você colocar um valor diferente, como por exemplo 5 a tela vai seguir o player com a velocidade de 5, qualquer coisa veja este meu tutorial sobre o assunto:

https://tgmbrasil.com.br/viewtopic.php?f=9&t=135

Dito isso, já percebemos que não dá pra utilizar ela no código. Então você vai ter que calcular a velocidade guardando a velocidade anteior e depois subtrair com a velocidade atual. Use o objeto controle e no create declare:

Código: Selecionar todos

view_last_x = view_xview[0];
view_xspeed = 0;
No Step:

Código: Selecionar todos

view_xspeed = view_xview[0] - view_last_x;
Depois no evento End Step tu colcoca:

Código: Selecionar todos

view_last_x = view_xview[0];
Dai finalmente quando tu for utilizar você usa:

Código: Selecionar todos

// FRENTE
tile_layer_shift(-1, view_xspeed * 0.5, 0);
// FRENTE 2
tile_layer_shift(-2, view_xspeed * 0.5, 0);
// FRENTE 3
tile_layer_shift(-3, view_xspeed * 0.5, 0);
Não testei, mas acho que deve resolver.

FLWS!
Começando com o Game Maker? Olhou para assinatura certa!

Imagem

Tutoriais e vídeo aulas de programação! Clique no Banner e confira!

Avatar do usuário
AdrianoPpaula
Membro
Membro
Reações: 0
Mensagens: 59
Localização: Quissamã RJ

Contato:

Re: [80%] Efeito Parallax usando Tiles

Mensagem por AdrianoPpaula » Dom Out 08, 2017 10:02 pm

Rapaz funcionou perfeitamente, o erro do cenário continuar andando apos a câmera chegar nos limites da room foi resolvido lol lol
Porem a única coisa que acontece que não sei entender é que o cenário parece que anda mais quando o personagem anda pra frente, e quando ele anda para trás o cenário anda mais devagar um pouco fazendo com que ele sempre vá andando para frente um porquinho, fiz um teste fiquei indo e voltando com o personagem na room e o cenário sempre andava mais um pokiquinho =/
Fiz exatamente como vc disso:

CREATE

Código: Selecionar todos

view_last_x = view_xview[0];
view_xspeed = 0;
STEP

Código: Selecionar todos

view_xspeed = view_xview[0] - view_last_x;

END STEP

Código: Selecionar todos

view_last_x = view_xview[0];
Draw

Código: Selecionar todos

    // FUNDO
    tile_layer_shift(5,view_xspeed * 0.001 ,0);
    // FRENTE
    tile_layer_shift(-1,view_xspeed * 0.002 ,0);
    // FRENTE 2
    tile_layer_shift(-2,view_xspeed * 0.003 ,0);
    // FRENTE 3
    tile_layer_shift(-3,view_xspeed * 0.004 ,0);
* Pensei que seria pelo fato de colocar no draw, então coloquei isso em outros eventos mas continuou a mesma coisa. também só ficou bom o resultado quando troquei os valores para valores menores pois antes o cenário estava andando tão rápido que saia da tela.
Imagem

Avatar do usuário
All-x
Administrador
Administrador
Reações: 8
Mensagens: 621
Localização: Dourados-MS

Contato:

Re: [80%] Efeito Parallax usando Tiles

Mensagem por All-x » Seg Out 09, 2017 9:13 am

Muda tudo para o End Step:

Código: Selecionar todos

view_xspeed = view_xview[0] - view_last_x;
view_last_x = view_xview[0];

// FRENTE
tile_layer_shift(-1, view_xspeed * 0.1, 0);
// FRENTE 2
tile_layer_shift(-2, view_xspeed * 0.25, 0);
// FRENTE 3
tile_layer_shift(-3, view_xspeed * 0.5, 0);
Testei aqui e funcionou OK.

FLWS!
Começando com o Game Maker? Olhou para assinatura certa!

Imagem

Tutoriais e vídeo aulas de programação! Clique no Banner e confira!

Avatar do usuário
AdrianoPpaula
Membro
Membro
Reações: 0
Mensagens: 59
Localização: Quissamã RJ

Contato:

Re: [80%] Efeito Parallax usando Tiles

Mensagem por AdrianoPpaula » Qua Out 11, 2017 10:16 am

DEU CERTO!!!!
No meu caso descobri o que estava acontecendo, era uma incompatibilidade com o sistema de renderização do jogo onde todos os objetos fora da views são desligado ai em alguns poucos segundos o step do objeto que eu estava colocando o script estava desativando fazendo com o os tiles parasse por um pequeno período de tempo. Coloquei o end step geral e funcionou. ^^

End step

Código: Selecionar todos

/// TILESET PARALLAX
view_xspeed = view_xview[0] - view_last_x;
view_last_x = view_xview[0];

// FRENTE
tile_layer_shift(-1, view_xspeed * - 0.2, 0);
// FRENTE 2
tile_layer_shift(-2, view_xspeed * - 0.3, 0);
// FRENTE 3
tile_layer_shift(-3, view_xspeed * - 0.4, 0);
* Estranhamente tive que transformar os valores em negativos para funcionar 100% aqui no jogo. xD
Imagem

Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes