[Resolvido] Colisão com formas do Draw

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

Resolvido [Resolvido] Colisão com formas do Draw

Mensagem por Golpe Baixo em Sab 19 Nov 2011, 14:38

Eai pessoal!

Estou desenvolvendo um projeto cujo objetivo do jogador é não ser pego pelas câmeras.

Para criar o campo de visão da câmera, criei um objeto que não usa sprite, mas para representá-lo, criei um desenho a partir do comando draw_line_color().

O que eu quero, é que quando o objeto do jogador colidir com esse desenho, ele se auto-destroir, para isso, usei o comando instance_destroy(). Tudo deveria acontecer do jeito que esperava, mas não aconteceu. Simplesmente o objeto do jogador ignora esse evento, e percorre a fase como se não houvesse o evento de colisão.

Gostaria que alguém me ajudasse a solucionar esse problema.

Código-Fonte




Até!


Última edição por Golpe Baixo em Dom 20 Nov 2011, 15:41, editado 2 vez(es)

Golpe Baixo

Ranking : Sem avaliações
Número de Mensagens : 284
Data de inscrição : 01/10/2011
Notas recebidas : A
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://caiqueluzsilva.wordpress.com/

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido] Colisão com formas do Draw

Mensagem por Convidad em Sab 19 Nov 2011, 15:21

Você pode criar uma sprite similar a forma que é criada no draw,caso o draw line seja fixo. Assim pode usa-lo como máscara.......
Mas caso queira algo mas automático teras que usar o x é y do objeto é calcular o raio e redimensionar uma sprite de máscara.
flw

Convidad
Convidado


Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido] Colisão com formas do Draw

Mensagem por Golpe Baixo em Sab 19 Nov 2011, 15:37

TRFN escreveu:Você pode criar uma sprite similar a forma que é criada no draw,caso o draw line seja fixo. Assim pode usa-lo como máscara.......
Mas caso queira algo mas automático teras que usar o x é y do objeto é calcular o raio e redimensionar uma sprite de máscara.
flw

Creio que desse jeito vai ser complicado de mais, pois o comando draw_line_color() não é fixo porque os argumentos mudam de acordo com o movimento de um outro objeto. Segue o código-fonte do protótipo do projeto:

Download

Golpe Baixo

Ranking : Sem avaliações
Número de Mensagens : 284
Data de inscrição : 01/10/2011
Notas recebidas : A
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://caiqueluzsilva.wordpress.com/

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido] Colisão com formas do Draw

Mensagem por PedroX em Sab 19 Nov 2011, 15:54

Basta usar collision_line. Vou explicar.
No seu jogo você desenhou várias linhas e isso complica.

Essa é a função:
collision_line(x1,y1,x2,y2,obj,prec,notme)

Ela checa se há uma instância do objeto obj entre os dois pontos.

Prec = Se quer que colida com a sprite coloque 1, mas se quiser que colida com a Bounding Box, coloque 0.

Notme = coloque 1 para que ignore o objeto que chamou a função

Então coloque no Objeto Linha:
Código:
if collision_line(x_inicial_linha,y_inicial_linha,x_final_linha,y_final_linha, obj_player, 0, 1){
with(player) instance_destroy();
}

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

Resolvido Re: [Resolvido] Colisão com formas do Draw

Mensagem por Golpe Baixo em Sab 19 Nov 2011, 23:47

Pedrø escreveu:Basta usar collision_line. Vou explicar.
No seu jogo você desenhou várias linhas e isso complica.

Essa é a função:
collision_line(x1,y1,x2,y2,obj,prec,notme)

Ela checa se há uma instância do objeto obj entre os dois pontos.

Prec = Se quer que colida com a sprite coloque 1, mas se quiser que colida com a Bounding Box, coloque 0.

Notme = coloque 1 para que ignore o objeto que chamou a função

Então coloque no Objeto Linha:
Código:
if collision_line(x_inicial_linha,y_inicial_linha,x_final_linha,y_final_linha, obj_player, 0, 1){
with(player) instance_destroy();
}

Vamos dizer que deu meio certo. Usei esse código para o campo de visão da Câmera 1 e funcionou perfeitamente. Já quando usei na Câmera 2, não funcionou. Creio que se você baixar (vide mensagem principal) e analisar o código-fonte do protótipo, acho que seria mais fácil me ajudar.




Até!

Golpe Baixo

Ranking : Sem avaliações
Número de Mensagens : 284
Data de inscrição : 01/10/2011
Notas recebidas : A
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://caiqueluzsilva.wordpress.com/

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido] Colisão com formas do Draw

Mensagem por diego333 em Dom 20 Nov 2011, 12:12

o collision_line nao iria funcionar pq ele só 'colide' com outras sprites e nao com outros 'collision_line' ou seja vc teria que usar apenas um collision_line ... ou sprites mesmo

diego333

Número de Mensagens : 84
Data de inscrição : 06/10/2010
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido] Colisão com formas do Draw

Mensagem por Golpe Baixo em Dom 20 Nov 2011, 14:16

diego333 escreveu:o collision_line nao iria funcionar pq ele só 'colide' com outras sprites e nao com outros 'collision_line' ou seja vc teria que usar apenas um collision_line ... ou sprites mesmo

Sim, o objeto que chama essa função não tem sprites, mas o objeto do jogador, que é o objeto a ser checado a colisão usa sprites sim.

Golpe Baixo

Ranking : Sem avaliações
Número de Mensagens : 284
Data de inscrição : 01/10/2011
Notas recebidas : A
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://caiqueluzsilva.wordpress.com/

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido] Colisão com formas do Draw

Mensagem por PedroX em Dom 20 Nov 2011, 14:58

Primeiramente, substitui aquele monte de draw_line_color por um único draw_triangle_color. Se quiser do outro jeito, não tem problema.

Eu usei um script chamado point_in_triangle e adaptei ao seu jogo, testando as colisões com base na bbox do sprite.

Problema resolvido:
http://dl.dropbox.com/u/38888521/PROJETO.gmk

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

Resolvido [Resolvido] Colisão com formas do Draw

Mensagem por Golpe Baixo em Dom 20 Nov 2011, 15:40

Pedrø escreveu:Primeiramente, substitui aquele monte de draw_line_color por um único draw_triangle_color. Se quiser do outro jeito, não tem problema.

Eu usei um script chamado point_in_triangle e adaptei ao seu jogo, testando as colisões com base na bbox do sprite.

Problema resolvido:
http://dl.dropbox.com/u/38888521/PROJETO.gmk

Opa!

Cara, muito obrigado. Funcionou perfeitamente, do jeito que eu queria. Sobre o modo que você solucionou o problema, está muito melhor do que antes, agora o código se resumiu em uma linha, e com o script ponto_triangulo() que você criou, ficou muito mais fácil fazer algo do tipo em outras situações semelhantes.

Mais uma vez, muito obrigado!

Podem trancar o tópico!




Até!

Golpe Baixo

Ranking : Sem avaliações
Número de Mensagens : 284
Data de inscrição : 01/10/2011
Notas recebidas : A
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://caiqueluzsilva.wordpress.com/

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido] Colisão com formas do Draw

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


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