[Resolvido]Colisão alinhada ao GRID

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

Resolvido [Resolvido]Colisão alinhada ao GRID

Mensagem por Limalokão em Dom 27 Fev 2011, 21:29

Então, quando eu clico com o bt esquerdo do mouse cria o player_1 e com o bt direito do mouse o player_2, esses players são alinhados ao GRID de 32x32, agora vem a questão, como fazer para que quando eu criar o player_1 e depois criar o player_2 em cima do player_1 o player_2 se desloque e se alinhe ao GRID!? Tentei fazer mas eles estão parando um em cima do outro! =/ Vlws!


Última edição por Soul Limaloko em Seg 28 Fev 2011, 16:09, editado 1 vez(es)

Limalokão

Ranking : Nota C
Número de Mensagens : 803
Idade : 24
Data de inscrição : 24/11/2009
Notas recebidas : C
Reputação : 10
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]Colisão alinhada ao GRID

Mensagem por Willy em Dom 27 Fev 2011, 21:39

No step, coloque isso:
Código:
if (mouse_check_button(mb_left) && instance_position(mouse_x, mouse_y, obj_nome) == noone)
instance_create(floor(mouse_x/32)*32, floor(mouse_y/32)*32, obj_nome);
Isso vai checar se a poisção do mouse esta vazia, e então, cria o obj_nome alnhado a grade.
Para fazer pro botão direito, é so trocar o mb_left por mb_right.

Espero ter ajdado.
blz


Última edição por Willy em Dom 27 Fev 2011, 21:42, editado 2 vez(es) (Razão : Code)

___________


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]Colisão alinhada ao GRID

Mensagem por Math Maker em Dom 27 Fev 2011, 21:41

Acho que isso resolverá:

No player_2, após alinhamento:
Código:
{ if (x = player_1.x and y = player_1.y) { hspeed = 5; } if(place_snapped(32,32)) { hspeed = 0; }}

Veja se resolve de certo modo seu problema, se sim, adapte o código para funcionar em qualquer circunstância. Surgindo dúvidas é só postá-las.

Math Maker

Número de Mensagens : 107
Idade : 21
Data de inscrição : 26/02/2011
Reputação : 6
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]Colisão alinhada ao GRID

Mensagem por Willy em Dom 27 Fev 2011, 22:01

Ja estava esquencendo, você quer que ele se desloque para outro grind após ser criado, certo? Então no create do player 2, coloque isso:
Create:
Código:
if place_meeting(x,y,obj_player1){
  if place_free(x+32,y){
  x+=32
  }else if place_free(x-32,y){
  x-=32
  }
}
Esse código checa se o jogador2 esta dentro do jogador1. Se isso for true, ele checara se esta livre a frente dele e se movera 32 pixels. Se Tiver ocupado 32 pix a frente, ele recua 32 pix.

O código que eu passei no tópico anterior não vai permitir a criação do player2 sobre o player1, por isso coloquei esse código também. Mas eu acho que ficaria melhor com o primeiro código.

Espero ter ajudado!
blz

___________


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]Colisão alinhada ao GRID

Mensagem por Limalokão em Seg 28 Fev 2011, 16:08

Vlws Willy e a todos que ajudaram! Dei uma adaptada no seu code Willy:
Código:
if place_meeting(x,y,player_2){
  if place_free(x,y+32){
  y+=32
  }else if place_free(x,y-32){
  y-=32
  }
}
if place_meeting(x,y,player_1){
  if place_free(x,y+32){
  y+=32
  }else if place_free(x,y-32){
  y-=32
  }
}
if place_meeting(x,y,player_2){
  if place_free(x+32,y){
  x+=32
  }else if place_free(x-32,y){
  x-=32
  }
}
if place_meeting(x,y,player_1){
  if place_free(x+32,y){
  x+=32
  }else if place_free(x-32,y){
  x-=32
  }
}

=D Vlws!

Limalokão

Ranking : Nota C
Número de Mensagens : 803
Idade : 24
Data de inscrição : 24/11/2009
Notas recebidas : C
Reputação : 10
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]Colisão alinhada ao GRID

Mensagem por Conteúdo patrocinado Hoje à(s) 02:42


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