Colisao com uma area retangular inclinada

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

20% Colisao com uma area retangular inclinada

Mensagem por Neofix em Sab 14 Abr 2012, 11:37



O meu problema é o seguinte. Eu devo criar uma area de COLISÃO RETANGULAR INCLINADA entre uma peça e outra.
As peças que estiverem dentro dessa area serão atingidas pelo "tiro".
Eu pensei em criar duas linhas nas extremidades dessa area para demarca-la.
Existe o problema do angulo entre as peças (O calculo dessas linhas devem ser atualizadas (STEP) conforme um dos objetos se move).
Enfim talvez seja uma coisa simples mas não estou conseguindo implementar de jeito nenhum.

Estou usando para desenhar os sprites
Código:

draw_sprite( spr_p1_lvl1, image_index, x, y );
if
!((collision_circle(x, y, 32, obj_ind_dedo, 1, 1) and (global.distanciaaction>=68)) and global.playermode==2)
{  draw_sprite( spr_p1_lvl1, image_index, x, y ); }
else
{  draw_sprite( spr_p1_lvl1_hit, image_index, x, y ); }

E para desenhar a linha:
Código:

draw_line(global.pecax,global.pecay,global.obj_ind_dedox,global.obj_ind_dedoy);

Onde:
global.pecax = X da peça selecionada
global.pecay = Y da peça selecionada
global.obj_ind_dedox = X o obj controlado pelo mouse
global.obj_ind_dedoy = Y o obj controlado pelo mouse
global.distanciaaction = É a distancia do obj controlado pelo mouse
global.playermode==2 = Significa que a peça está em modo de ataque

Bom, mais uma vez, obrigado a todos pela ajuda.
Em breve vou disponibilizar o game para vcs testarem, é um game de tabuleiro bem interessante rsrs

Neofix

Ranking : Nota A
Número de Mensagens : 98
Data de inscrição : 19/01/2009
Notas recebidas : A
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

20% Re: Colisao com uma area retangular inclinada

Mensagem por GameMakerTutoriais em Sab 14 Abr 2012, 12:29


Amigo, eu só não entendi muito bem se a peça tem que estar completa ou parcialmente dentro da área de colisão...

Mas acho que tem duas formas simples: A primeira é você criar um objeto com um sprite quadrado, marcando o pivô no centro do sprite e deixando a opção "precise collision checking" marcada. Depois, no jogo, é só ajustar o ângulo e o tamanho do sprite de acordo com a situação. Quando a peça colidir com esse objeto, ela estará em condição de ser destruída.

O outro jeito é checar se há interseção entre qualquer uma das linhas que formam o polígono da área colisão da peça e da área de colisão do tiro. Nesse caso, esse engine do Pedro pode te ajudar:

http://gmbr.forumeiros.com/t21703-exemplo-interseccao-de-duas-retas

Abraços!

GameMakerTutoriais

Número de Mensagens : 800
Data de inscrição : 29/01/2011
Reputação : 26
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

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