Ú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

Colisao com uma area retangular inclinada

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

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

Ranking : Nota A
Notas recebidas : A
Data de inscrição : 19/01/2009
Número de Mensagens : 98
Insígnias de JAM :

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

Prêmios
   : 1
   : 0
   : 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

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

Data de inscrição : 29/01/2011
Número de Mensagens : 800
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

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