Página 1 de 1

[ RESOLVIDO ] Efeito Parallax usando Tiles

Enviado: Qui Out 05, 2017 4:49 pm
por AdrianoPpaula
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

Re: [50%] Efeito Parallax usando Tiles

Enviado: Sáb Out 07, 2017 6:35 pm
por All-x
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!

Re: [80%] Efeito Parallax usando Tiles

Enviado: Dom Out 08, 2017 10:02 pm
por AdrianoPpaula
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.

Re: [80%] Efeito Parallax usando Tiles

Enviado: Seg Out 09, 2017 9:13 am
por All-x
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!

Re: [80%] Efeito Parallax usando Tiles

Enviado: Qua Out 11, 2017 10:16 am
por AdrianoPpaula
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