[Resolvido] Movimentação com backgroud de tileset

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

[Resolvido] Movimentação com backgroud de tileset

Mensagem por chicoweb em Ter 14 Jul 2015, 21:06

Como movimenta uma conjunto de tile.
Por exemplo o backgroud[1] tem os tiles desenhados no layer 100001;
Eu queria dar um paralax só nesses alguem sabe?

OBS: Esse código movimento só o back e não os tiles:

Código:
background_x[1] = view_xview[0]

chicoweb

Ranking : Nota C
Número de Mensagens : 666
Idade : 40
Data de inscrição : 15/05/2012
Notas recebidas : B+C
Reputação : 49
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Resolvido] Movimentação com backgroud de tileset

Mensagem por Gonçalves em Ter 14 Jul 2015, 21:22

Tu pode usar o tile_layer_shift() para mover os tiles de um depth específico.

Gonçalves

Ranking : Nota B
Número de Mensagens : 1013
Data de inscrição : 29/10/2010
Notas recebidas : B + A + C
Reputação : 79
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Resolvido] Movimentação com backgroud de tileset

Mensagem por chicoweb em Ter 14 Jul 2015, 22:02

Ele não se movimenta como eu imaginei com o shift, não sei a aplicação do shift, usei o xview e ele sai voando da tela.

Na verdade eu queria que os tiles ficassem parados na tela, como o código que eu citei faz com o background.

Resumindo eu queria fazer isso:

Código:
background_x[0] = view_xview[0]

Mas com os tiles, entendeu?

chicoweb

Ranking : Nota C
Número de Mensagens : 666
Idade : 40
Data de inscrição : 15/05/2012
Notas recebidas : B+C
Reputação : 49
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Resolvido] Movimentação com backgroud de tileset

Mensagem por chicoweb em Qua 15 Jul 2015, 00:05

Alguem pode fazer uma engine, já perdi 3 horas nessa m.... por favor!

Simplificando o que preciso:

Os tiles do depth 1001 vão acompanhar o buneco normalmente usando as views e o hbor e o obj_following.

Os tiles do depth 1000 NÃO vai acompanhar o buneco ele vai ficar parado, exemplos umas montanhas láaa atras do cenário, mas feita por tiles.

chicoweb

Ranking : Nota C
Número de Mensagens : 666
Idade : 40
Data de inscrição : 15/05/2012
Notas recebidas : B+C
Reputação : 49
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Resolvido] Movimentação com backgroud de tileset

Mensagem por Alex FC em Qui 16 Jul 2015, 10:27

@chicoweb: O que o Gonçalves passou está correto. Os argumentos x e y do tile_layer_shift() são o montante que os tiles no determinado depth vão se mover ou seja, é como se fosse a velocidade.

Ref. Documentação:

http://docs.yoyogames.com/source/dadiospice/002_reference/game%20assets/backgrounds/background%20tiles/tile_layer_shift.html

SEMPRE consulte a documentação, a tradução do Google não é das melhores, mas da pra entender bem caso você não tenha boa compreensão do inglês.

Pra resolver você vai ter que calcular a diferença da posição atual e a posição anterior da view pra obter a velocidade da mesma em tempo real.

SE NÃO CONSEGUIR ABRA O SPOILER:
- No Create coloque:

Código:
//Pega posições da view
vx = view_xview[0];
vy = view_yview[0];

- No Step:

Código:
//Depth 'parado' - que segue a view
tile_layer_shift(1000000, view_xview[0] - vx, view_yview[0] - vy);

//Depth 'lerdo' - que segue a view lentamente (50% de atraso .5)
tile_layer_shift(1000001, (view_xview[0] - vx)*.5, (view_yview[0] - vy)*.5);

//Atualiza posições da view
vx = view_xview[0];
vy = view_yview[0];

FLWS!


Alex FC

Ranking : Nota A
Número de Mensagens : 2503
Idade : 23
Data de inscrição : 20/12/2008
Notas recebidas : B A
Reputação : 174
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Re: [Resolvido] Movimentação com backgroud de tileset

Mensagem por chicoweb em Qui 16 Jul 2015, 13:55

Ahh Muleki só vc mesmo Alex.

Quase perfeito o seu código.

Eu tinha consultado a documentação oficial sim, sempre vejo os exemplos de uso lá.
Só faltava a matemática mesmo, pra pega a diferença da distancia da view, para onde eu deveria dar o shift.

Porquê quase perfeito?

Por que o segundo plano, o que fica parado, dá uma mexedinha assim que o player pára de andar.

To colocando aqui a engine que preparei pra testar, se alguem puder ajustar agradeço.

https://www.dropbox.com/s/upu76as0tbxin14/engine_mover_tiles.gmk?dl=0

chicoweb

Ranking : Nota C
Número de Mensagens : 666
Idade : 40
Data de inscrição : 15/05/2012
Notas recebidas : B+C
Reputação : 49
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Resolvido] Movimentação com backgroud de tileset

Mensagem por Alex FC em Qui 16 Jul 2015, 15:37

Só coloque os códigos que mandei colocar no Step, coloque em Draw Begin.

Esqueci de levar em consideração quando a tela é atualizada e quando os valores view_xview e view_yview são atualizados.

No caso eles são atualizados pouco antes do Draw Begin (Ainda dentro dele):



FLWS!

Alex FC

Ranking : Nota A
Número de Mensagens : 2503
Idade : 23
Data de inscrição : 20/12/2008
Notas recebidas : B A
Reputação : 174
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Re: [Resolvido] Movimentação com backgroud de tileset

Mensagem por chicoweb em Qui 16 Jul 2015, 19:09

A engine e do gm8 não tem BeginDraw.
Eu coloquei no begin step e não resolveu.

chicoweb

Ranking : Nota C
Número de Mensagens : 666
Idade : 40
Data de inscrição : 15/05/2012
Notas recebidas : B+C
Reputação : 49
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Resolvido] Movimentação com backgroud de tileset

Mensagem por Alex FC em Qui 16 Jul 2015, 21:35

E não vai resolver em nenhuma outra opção. O GM:S dá bem mais liberdade para o usuário avançado deixando o se intrometer em todas (Ou quase) etapas do desenho.

No GM8 não faço ideia de como fazer dar certo, pois as posições da view são atualizadas antes de iniciar o Draw. Pra você entender melhor, o desenho do GM8 segue essa sequência:

1 - Configura view, e atualiza suas propriedades;
2 - Desenha tiles, backgrounds, sprites no modo automático;
3 - Evento Draw de todas instâncias;

*Somente o passo 3 podemos editar.

Pra funcionar precisa das variáveis view_xview e view_yview atualizadas, o que acontece no passo 1.

Dai preciso fazer os cálculos necessários antes que as tiles sejam desenhadas e depois que atualizar as propriedades da view, ou seja, antes do passo 2 e depois do passo 1. Ambos passos não podemos nos intrometer no GM8.

O GMS:S dá essa liberdade com DrawBegin.

Bom, boa sorte, se alguém resolver me avise também porque pelo que sei não da.

FLWS!

Alex FC

Ranking : Nota A
Número de Mensagens : 2503
Idade : 23
Data de inscrição : 20/12/2008
Notas recebidas : B A
Reputação : 174
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Re: [Resolvido] Movimentação com backgroud de tileset

Mensagem por chicoweb em Sex 17 Jul 2015, 12:03

O GMS:S dá essa liberdade com DrawBegin.

Tem razão em tudo mano!

O GM:s é mais maleável digamos assim.
Eu converti a engine para GMS, coloquei o mesmo código no DrawBegin e ficou perfeitooo.

Como eu achei que ela ficou completa e servirá para muitos, vou disponibilizá-la para o publico ainda hoje e te dou os devidos créditos Alex FC.

Muito obrigado!

chicoweb

Ranking : Nota C
Número de Mensagens : 666
Idade : 40
Data de inscrição : 15/05/2012
Notas recebidas : B+C
Reputação : 49
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Resolvido] Movimentação com backgroud de tileset

Mensagem por Conteúdo patrocinado Hoje à(s) 22:20


Conteúdo patrocinado


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