Conectar-se
Quem está conectado
14 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 14 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Ranking : Nota D
Notas recebidas : D
Data de inscrição : 29/03/2009
Número de Mensagens : 927
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 6

Prêmios
   :
   : 1
   :
Ver perfil do usuário

como fazer uma colisao em códigos

em Seg 01 Mar 2010, 19:53
bom.. a pergunta ta no nome do tópico XD
Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6037
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 288

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: como fazer uma colisao em códigos

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...
avatar
Ranking : Nota B
Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Número de Mensagens : 2490
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 1 Insignia 3x 0
Reputação : 52

Prêmios
   : 0
   : 2
   : 1
Ver perfil do usuáriohttp://xcreatorgames.weebly.com/

Re: como fazer uma colisao em códigos

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.
Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6037
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 288

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: como fazer uma colisao em códigos

em Seg 01 Mar 2010, 20:46
eu me interesso...
vc pode postar?
avatar
Ranking : Nota B
Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Número de Mensagens : 2490
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 1 Insignia 3x 0
Reputação : 52

Prêmios
   : 0
   : 2
   : 1
Ver perfil do usuáriohttp://xcreatorgames.weebly.com/

Re: como fazer uma colisao em códigos

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"
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum