Últimos assuntos
» CR - Concurso Relâmpago!!
por Willy Ter 18 Jul 2017, 17:11

» 3D:como rodar a camara em horizontal?
por Cambalinho Ter 18 Jul 2017, 15:09

» [Resolvido] pode explicar a d3d_set_projection()?
por Cambalinho Ter 18 Jul 2017, 11:28

» Escrever a resposta certa muda de room
por PedroX Seg 17 Jul 2017, 21:46

» Nota de esclarecimento - GMBR voltou!
por Mentos e Coca-cola Seg 17 Jul 2017, 17:05

» [CR] Campo Minado
por Katerp Dom 16 Jul 2017, 23:09

» [CR] The Bazooka Cat
por Tedi Ripper Dom 16 Jul 2017, 23:01

» Como melhorar um protótipo(Design)
por lolandoplayer Dom 16 Jul 2017, 22:56

» Diminuir velocidade ao arrastar objeto
por LwysF Dom 16 Jul 2017, 17:33

» Ajuda para mecanismo do jogo
por Willy Dom 16 Jul 2017, 15:54

Estatísticas
Temos 12700 usuários registrados
O último usuário registrado atende pelo nome de Eduardo Gomes

Os nossos membros postaram um total de 220918 mensagens em 30411 assuntos

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
avatar
makgamer

Ranking : Nota D
Notas recebidas : D
Data de inscrição : 29/03/2009
Número de Mensagens : 927
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   :
   : 1
   :

Ver perfil do usuário

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

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   :
   :
   :

Ver perfil do usuário

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.
avatar
vinians

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 1 x 0 Insignia 2 x 1 Insignia 3 x 0

Prêmios
   : 0
   : 2
   : 1

Ver perfil do usuário 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
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6036
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   :
   :
   :

Ver perfil do usuário

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"
avatar
vinians

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 1 x 0 Insignia 2 x 1 Insignia 3 x 0

Prêmios
   : 0
   : 2
   : 1

Ver perfil do usuário http://xcreatorgames.weebly.com/

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