Onde as mentes criativas se encontram!


 
Avatar do usuário
AdrianoPpaula
Membro
Membro
Autor
Mensagens: 38
Registrado em: Qui Ago 27, 2015 5:56 am
Localização: Quissamã RJ

Contato:

[ RESOLVIDO ] Efeito Parallax usando Tiles

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
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 -
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
Alex FC
Administrador
Administrador
Mensagens: 338
Registrado em: Dom Abr 24, 2016 11:50 pm
Localização: Itaporã-MS

Contato:

Re: [50%] Efeito Parallax usando Tiles

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:

view_last_x = view_xview[0];
view_xspeed = 0;


No Step:

view_xspeed = view_xview[0] - view_last_x;


Depois no evento End Step tu colcoca:

view_last_x = view_xview[0];


Dai finalmente quando tu for utilizar você usa:

// 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
Autor
Mensagens: 38
Registrado em: Qui Ago 27, 2015 5:56 am
Localização: Quissamã RJ

Contato:

Re: [80%] Efeito Parallax usando Tiles

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
view_last_x = view_xview[0];
view_xspeed = 0;

STEP
view_xspeed = view_xview[0] - view_last_x;


END STEP
view_last_x = view_xview[0];

Draw
    // 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
Alex FC
Administrador
Administrador
Mensagens: 338
Registrado em: Dom Abr 24, 2016 11:50 pm
Localização: Itaporã-MS

Contato:

Re: [80%] Efeito Parallax usando Tiles

Seg Out 09, 2017 9:13 am

Muda tudo para o End Step:

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
Autor
Mensagens: 38
Registrado em: Qui Ago 27, 2015 5:56 am
Localização: Quissamã RJ

Contato:

Re: [80%] Efeito Parallax usando Tiles

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
/// 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

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante