[Resolvido]Como fazer uma room com loop horizontal?

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

Resolvido [Resolvido]Como fazer uma room com loop horizontal?

Mensagem por Knonick em Ter 31 Maio 2011, 10:08

Gostaria de fazer uma room com loop horizontal, mas que não se mexesse. Cada parte do player que sair da room, aparecer no outro lado da room. Alguém me ajuda?


Última edição por Knonick em Ter 31 Maio 2011, 21:09, editado 1 vez(es)

Knonick

Número de Mensagens : 92
Idade : 18
Data de inscrição : 10/05/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Como fazer uma room com loop horizontal?

Mensagem por Nuclear em Ter 31 Maio 2011, 10:25

Todos os lados:

Código:
if (bbox_right<0)x=room_width;

if (bbox_bottom<0)y=room_height;else
if (bbox_top>room_height)y=0;

Horizoltal

Código:
if (bbox_left>room_width)
x=0;else

Não tenho certeza se funciona mas é bom testar

Nuclear

Ranking : Nota B
Número de Mensagens : 346
Idade : 18
Data de inscrição : 18/02/2011
Notas recebidas : B
Reputação : 22
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Como fazer uma room com loop horizontal?

Mensagem por Knonick em Ter 31 Maio 2011, 10:57

Eu coloco esse código aonde? No player?

---EDIT---

Já consegui. Mas mudei o código para:
if (bbox_left>room_width)
x=0;
if (bbox_right<0)
x=room_width;

Knonick

Número de Mensagens : 92
Idade : 18
Data de inscrição : 10/05/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Como fazer uma room com loop horizontal?

Mensagem por Carlos L. em Ter 31 Maio 2011, 13:09

Tem uma função no game maker que faz esse efeito sem precisar fazer verificações.
Código:
move_wrap (hor, vert, margem) Envolve a instância, quando ela sair do room para o outro lado. hor indica que se envolve horizontalmente e vert indica que se envolve na vertical. margem indica o quanto a origem da instância deve estar fora da room antes do envolvimento que acontece. Por isso, ele é uma margem em torno do room. Você geralmente usa esta função no evento lado de fora.
Como exemplo crie um quadrado e coloque o código.
move_wrap(1,1,32)
Ele irá sair por todos os lados da room e aparecer do outro fazendo um loop.
flw

Carlos L.

Ranking : Nota C
Número de Mensagens : 270
Data de inscrição : 26/09/2010
Notas recebidas : C
Reputação : 8
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Como fazer uma room com loop horizontal?

Mensagem por saim em Ter 31 Maio 2011, 14:35

Pra ele ir aparecendo à medida que vai sumindo do outro lado, pode ser necessário criar uma nova instância do obj_player do lado de lá da tela. Aí, você destrói a(s) instâncias que estiverem a 1 pixel fora da tela. Cuidado com as variáveis locais e create events na hora de fazer isso.

Mas se você não precisar das duas metades (uma em cada canto da tela) aparecendo e colidindo ao mesmo tempo, melhor manter como está.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Como fazer uma room com loop horizontal?

Mensagem por Carlos L. em Ter 31 Maio 2011, 14:46

saim escreveu:Pra ele ir aparecendo à medida que vai sumindo do outro lado, pode ser necessário criar uma nova instância do obj_player do lado de lá da tela. Aí, você destrói a(s) instâncias que estiverem a 1 pixel fora da tela. Cuidado com as variáveis locais e create events na hora de fazer isso.

Mas se você não precisar das duas metades (uma em cada canto da tela) aparecendo e colidindo ao mesmo tempo, melhor manter como está.
Opa Saim não será necessário ele fazer isso o código que eu falei acima faz exatamente essa função de fazer ele desaparecer de um lado e começar a aparecer do outro no mesmo instante em que ele sai da room.

move_wrap(hor,vert,margin)
hor = Se ele deve executar a ação na horizontal.
vert = Se ele deve executar a ação na vertical.
margin = Indica o quanto a origem da sprite deve estar fora da room para executar a ação.
flw

Carlos L.

Ranking : Nota C
Número de Mensagens : 270
Data de inscrição : 26/09/2010
Notas recebidas : C
Reputação : 8
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Como fazer uma room com loop horizontal?

Mensagem por saim em Ter 31 Maio 2011, 15:08

Carlos L. escreveu:o código que eu falei acima faz exatamente essa função de fazer ele desaparecer de um lado e começar a aparecer do outro no mesmo instante em que ele sai da room.
Fiz um teste aqui e o personagem sempre ficou com a sprite inteira de um lado só. Acho que é isso mesmo que a função faz: te pula pro outro lado da tela. do jeito que eu falei, a coisa seria como um portal, seu braço esquerdo aqui e seu braço direito lá do outro lado. Claro que isso nem sempre é necessário.
Mas eu posso ter feito alguma bobagem na hora de definir a margem. Se for isso, me explique como fazer. Eu usei "move_wrap(1, 1, 1)"

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Como fazer uma room com loop horizontal?

Mensagem por ricaun em Ter 31 Maio 2011, 15:21

Um modo pilado de fazer um efeito legal é colocar duas copias do sprite deslocadas!

Tente isso pra vc ver!
Bote no draw!
Código:
draw_sprite(sprite_index,0,x,y)
draw_sprite(sprite_index,0,x+room_width,y)
draw_sprite(sprite_index,0,x-room_width,y)

Edit:
{
Bote no step!
Código:
move_wrap(1, 0, 0)
}

É só pra loop horizontal!

Té!

ricaun

Número de Mensagens : 169
Idade : 27
Data de inscrição : 23/09/2008
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Como fazer uma room com loop horizontal?

Mensagem por Carlos L. em Ter 31 Maio 2011, 15:32

saim escreveu:
Carlos L. escreveu:o código que eu falei acima faz exatamente essa função de fazer ele desaparecer de um lado e começar a aparecer do outro no mesmo instante em que ele sai da room.
Fiz um teste aqui e o personagem sempre ficou com a sprite inteira de um lado só. Acho que é isso mesmo que a função faz: te pula pro outro lado da tela. do jeito que eu falei, a coisa seria como um portal, seu braço esquerdo aqui e seu braço direito lá do outro lado. Claro que isso nem sempre é necessário.
Mas eu posso ter feito alguma bobagem na hora de definir a margem. Se for isso, me explique como fazer. Eu usei "move_wrap(1, 1, 1)"
Qual foi a dimensão da sua imagem?
Faça um exemplo da seguinte maneiro crie uma sprite de 32x32 coloque qualquer cor nela e coloque o seguinte código.
move_wrap(1,1,32)
Não sei como explicar direito mais acho que a margem funciona mais ou menos assim, no seu caso vou fazer de conta que você usou uma sprite de 32x32, então como na margem você só colocou 1 ele só iria mostrar a sprite novamente depois que do outro lado onde ela estivesse só estivesse 1 Pixel da imagem (considerando a origem da sprite) fora da room.

Carlos L.

Ranking : Nota C
Número de Mensagens : 270
Data de inscrição : 26/09/2010
Notas recebidas : C
Reputação : 8
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Como fazer uma room com loop horizontal?

Mensagem por saim em Ter 31 Maio 2011, 16:06

Não, mesma coisa. Só demorou um pouco mais pra aparecer do outro lado. Fiz outro teste e coloque a margem negativa (-32). O personagem apareceu bem pra dentro da tela.
Meu sprite realmente é 32x32 e a origem é em (0, 0).

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Como fazer uma room com loop horizontal?

Mensagem por Knonick em Ter 31 Maio 2011, 21:08

O move wrap deu no mesmo do código do NUCLEAR, mas fica mais simples. Estou usando uma sprite de 32x32, mas queria que cada pixel que passasse de um lado aparecesse do outro, e o código do ricaun fez exatamente o que eu queria. Vlw.

Knonick

Número de Mensagens : 92
Idade : 18
Data de inscrição : 10/05/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Como fazer uma room com loop horizontal?

Mensagem por Willy em Ter 31 Maio 2011, 23:01

Tópico resolvido.
Trancado.
Se o autor quiser reabrir o tópico envie MP para algum administrador ou moderador.

___________


Engines, tutoriais e projetos? Clique no banner!



Atenção:
Comporte-se, senão você vai levar a cintada do Willy no meio da bunda! bravo


Willy

Ranking : Nota A
Número de Mensagens : 1812
Idade : 23
Data de inscrição : 08/06/2009
Notas recebidas : C + B + A + A
Reputação : 245
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://willy-gmbr.blogspot.com/

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Como fazer uma room com loop horizontal?

Mensagem por Conteúdo patrocinado Hoje à(s) 14:37


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