| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2010 17:17:26
|
Naruffy
JavaEvangelist
![[Avatar]](/images/avatar/d74dc3f2679eee2fa69ddb9597b61258.jpg)
Membro desde: 28/03/2008 18:54:49
Mensagens: 324
Offline
|
Fla pessoal, blz?
To com uma seguinte dúvida, procurei bastante na internet e não achei mta coisa, estou fazendo um pequeno teste com Java2d para aprender um pouco de física para usar em games, no meu teste bolas ficam caindo e quicando no chão, paredes e umas nas outras, até a parte do chão e paredes está tranquilo, minha duvida está na hora de detectar colisões entre as bolinhas, eu fiz uma comparação na mão, "deu para tapar o buraco", mas queria algo mais elegante.
Queria saber se o Java2d tem recurso pronto para detectar colisões entre círculos, e se tiver como faz.
Aproveitando para deixar outra pergunta sobre o assunto.
Estou utilizando vetores para calcular os movimentos, alguem ai sabe como faço para calcular um vetor resultante de uma colisão entre esses vetores?
Agradeço desde já.
[]s
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2010 18:00:06
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Online
|
Veja a classe Elipse2D: http://java.sun.com/j2se/1.4.2/docs/api/java/awt/geom/Ellipse2D.html Ela possui o método para detectar colisão (intersectsWith). Quanto ao resultante. Basta somar os dois vetores. Lindo, não?
This message was edited 1 time. Last update was at 08/04/2010 18:00:25
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2010 18:04:06
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Online
|
Ah. Se quiser fazer a mão: Pegue o vetor que representa a posição de cada bola (do centro da bola). Subtraia um do outro. Para haver colisão: O tamanho desse vetor (que representa distância entre as bolas) deve ser menor que a soma dos dois raios. Para otimizar isso, basta fazer o tamanho ao quadrado ser menor que a soma dos raios ao quadrado (o que evita o calculo de raiz quadrada no tamanho).
This message was edited 1 time. Last update was at 08/04/2010 18:04:50
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/01/2011 16:09:15
|
loganwlogan
JavaTeenager
![[Avatar]](/images/avatar/c8c1e7d54152d758d6c2b.jpg)
Membro desde: 31/08/2004 00:17:26
Mensagens: 182
Offline
|
Olá amigos,
Eu tenho estudo um pouco sobre Java2D e uma das dúvidas que eu tinha era justamente sobre a colisão entre esferas, comecei estudo algumas dicas dadas nesse tópico e busquei mais algumas coisas na internet, pati do conceito geométrico de que duas bolas colidem quando a soma dos raios é igual ou menor que a distância dos centros dessas bolas, partindo desse princípio eu crie uma classe Bola e nela criei um método que calcula a distância entre o centro das duas bolas.
Depois criei um método que detecta a colisão
E na Thread do meu JPanel eu fiz da seguinte maneira
Sei que é um exemplo bem simplório e ainda precisa de muito trabalho em cima dele, mas achei legal compartilhar com os colegas
Abçs
Marcelo Logan
| Nome do arquivo |
ExperimentosBolas.jar |
Download
|
| Descrição |
Jar do meu projeto |
| Tamanho |
101 Kbytes
|
| Baixado: |
43 vez(es) |
This message was edited 2 times. Last update was at 06/01/2011 16:10:40
|
"Quando você olhar dentro do abismo
O Abismo olhará dentro de você"
Guerras Infinitas |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/01/2011 16:26:18
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Online
|
Logan, vai ficar ainda mais elegante se você usar vetores para representar seus pontos. A classe Vector2D poderia substituir tranquilamente a sua classe PontoMedio (ou Ponto).
Dá uma lida:
O uso de vetores nos jogos
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/01/2011 18:02:54
|
loganwlogan
JavaTeenager
![[Avatar]](/images/avatar/c8c1e7d54152d758d6c2b.jpg)
Membro desde: 31/08/2004 00:17:26
Mensagens: 182
Offline
|
Valeu pela dica ViniGodoy,
Já dei uma lida, agora vou tentar trocar a Classe PontoMedio pela Vector2D. Fiz uns testes e o meu programa não fuinciona em todos os casos, se eu mudar a velocidade de uma das bolas da erro, mas vou continuar meus estudos.
Abçs
Marcelo Logan
|
"Quando você olhar dentro do abismo
O Abismo olhará dentro de você"
Guerras Infinitas |
|
|
 |
|
|