como fazer uma colisao em códigos

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

como fazer uma colisao em códigos

Mensagem por makgamer em Seg 01 Mar 2010, 19:53

bom.. a pergunta ta no nome do tópico XD

makgamer

Ranking : Nota D
Número de Mensagens : 927
Idade : 18
Data de inscrição : 29/03/2009
Notas recebidas : D
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   : 1
   :

Voltar ao Topo Ir em baixo

Re: como fazer uma colisao em códigos

Mensagem por PedroX em Seg 01 Mar 2010, 20:10

if place_meeting(x,y,obj){}
Código:
Vc pode usar x+1 p/colisionar na direita,x-1 p/esquerda e etc...

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: como fazer uma colisao em códigos

Mensagem por vinians em Seg 01 Mar 2010, 20:18

Bom voce tambem pode usar cálculos matemáticos. Podemos usar a formula da distancia. Primeiro clique no botão CENTER la na definição do sprite.
Depois supondo que tenhamos 2 objetos: ob1 e ob2. E que eles tenham 32 x 32 de tamanho. Sabento que os pontos estão centralizados basta usar o teorema de Pitágoras no Evento Step:
Código:

h := sqrt(abs(ob2.x - ob1.x) + abs(ob2.y - ob1.y));
if ( h < 16)
{
    //colisao aqui
}
Tambem tem como fazer com colisão de retangulos sobrepostos, se te interessar posso postar aqui.

vinians

Ranking : Nota B
Número de Mensagens : 2490
Idade : 27
Data de inscrição : 18/09/2008
Notas recebidas : B-C-A-C
Reputação : 52
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 2
   : 1

http://xcreatorgames.weebly.com/

Voltar ao Topo Ir em baixo

Re: como fazer uma colisao em códigos

Mensagem por PedroX em Seg 01 Mar 2010, 20:46

eu me interesso...
vc pode postar?

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: como fazer uma colisao em códigos

Mensagem por vinians em Seg 01 Mar 2010, 22:03

Claro!, então a colisão baseada em bounding boxes é o tipo usado pelo GM quando voce nao seleciona "Precise Collision Check". Mas podemos fazer uma um pouco mais simples criando um script assim:
Crie um novo script e o chame de "colidindo"
Coloque este código:
Código:

var ob1, ob2, sp1, sp2, w1, w2, h1, h2;
ob1 = argument0;
ob2 = argument1;
sp1 = ob1.sprite_index;
sp2 = ob2.sprite_index;
w1 = sprite_get_width(sp1);
w2 = sprite_get_width(sp2);
h1 = sprite_get_height(sp1);
h2 = sprite_get_height(sp2);
if (ob1.x + w1 < ob2.x) return false;
if (ob1.y + h1 < ob2.y) return false;
if (ob1.x > ob2.x + w2) return false;
if (ob1.y > ob2.y + h2) return false;
return true;
Agora é só voce usar no Evento STEP de alguma instancia para verificar a colisão assim:
Código:

if (colidindo(obj1.id, obj2.id))
{
    //faça algo caso esteja colidindo.
}
Essa rotina testar se um retangulo definido pela posicao x, y de um objeto mais o tamanho de seu sprite esbarre no retangulo do outro.
Além disso ela é projetada pra ser rapida pois ja da retorno tao logo verifique a impossibilidade de colisao.
Assim voce pode criar o seu proprio evento de colisão.
obs: Voce precisa das "instancia" e não do "objeto" por isso usei o "'.id"

vinians

Ranking : Nota B
Número de Mensagens : 2490
Idade : 27
Data de inscrição : 18/09/2008
Notas recebidas : B-C-A-C
Reputação : 52
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 2
   : 1

http://xcreatorgames.weebly.com/

Voltar ao Topo Ir em baixo

Re: como fazer uma colisao em códigos

Mensagem por Conteúdo patrocinado Hoje à(s) 10:24


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