| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/05/2010 14:42:51
|
GustavoBorba
JavaChild
Membro desde: 23/11/2009 19:23:23
Mensagens: 110
Offline
|
Estou tentando criar um sistema de Gravidade e Colisão entre formas da classe Graphics e Graphics2D. Mas nem sei por onde começar!
As formas eu já sei criar, mas só não sei como implementar Física no projeto. Se alguém poder me ajudar, me dizer por onde começar já ficarei muito agradecido!
Cordialmente,
Gustavo Borba.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/05/2010 15:20:12
|
Naruffy
JavaEvangelist
![[Avatar]](/images/avatar/d74dc3f2679eee2fa69ddb9597b61258.jpg)
Membro desde: 28/03/2008 18:54:49
Mensagens: 324
Offline
|
Olá GustavoBorba,
Você terá que utilizar conceitos de vetores para fazer isso, onde a gravidade terá um vetor, e o movimento das suas formas serçao representados por outros vetores.
recomendo vc ler o artigo sobre vetores do site www.pontov.com.br
[]s
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/05/2010 16:55:46
|
sfohart
Thread.start()
![[Avatar]](/images/avatar/c490f96bbae13d62132dda54ef1ec86e.png)
Membro desde: 21/12/2006 13:50:04
Mensagens: 39
Localização: Salvador, Bahia
Offline
|
Cara, eu não me lembro bem, mas sei que o pessoal do Indigente (Universidade Federal da Bahia) utilizava uma biblioteca C/C++ para a parte física da engine gráfica que eles estavam montando... Talvez tenha algo parecido pra java...
|
Leandro Soriano Ferreira
Analista de SIstemas
Bacharel em Ciência da Computação da UFBA
Sun Certified Programmer for Java 2 Platform 1.6
sfohart at gmail dot com
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/05/2010 17:22:17
|
GustavoBorba
JavaChild
Membro desde: 23/11/2009 19:23:23
Mensagens: 110
Offline
|
Olá, Boa Tarde/Noite!
Eu até achei uma engine que implementa a física em Java2D, mas eu gostaria mesmo de saber por conta própria, assim eu adquiriria mais conhecimento e meu horizonte de possibilidades ficaria maior. Eu li sobre os vetores, mas não entendi como aplica-los ao meu problema. Se alguém puder me orientar ou algo parecido, ficarei grato.
Cordialmente,
Gustavo Borba.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/05/2010 18:26:25
|
dudaskank
GUJ Ranger
Membro desde: 12/09/2003 14:59:26
Mensagens: 850
Localização: Suzano, SP, Brasil
Offline
|
Bem, o vetor aqui é usado para ter a velocidade e posição nos 2 eixos, x e y. você pode deixar como vetor ou separar em 2 atributos pra cada componente (velocidade x e velocidade y e posição x e y).
Gravidade nada mais é que uma força pra baixo... logo, se pra cima o y aumenta (considerando por exemplo que y=0 é o chão, y = 10 está em cima do chão vamos dizer assim), para simular a gravidade basta subtrair da velocidade y um valor constante em cada passo, até atingir uma velocidade máxima de queda livre. Aí, é só calcular a nova posição y daquele passo, que vai ser posicao y = posicao y (atual) + velocidade y.
Quando toca o chão (onde o y=0 por exemplo), é só "desligar" a força da gravidade e manter o y ali mesmo. Nessa hora, a velocidade y fica = 0. Assim a posição não é alterada.
Não sei se fui claro (acho que não rs) mas da pra ter umas idéias aqui: http://gamedesign.wikicomplete.info/gravity
|
Eduardo Oliveira
Toque a balada do amor inabalável, eterna love song de nós dois...
Página |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/05/2010 14:05:59
|
GustavoBorba
JavaChild
Membro desde: 23/11/2009 19:23:23
Mensagens: 110
Offline
|
Então eu devo declarar um Vector2D com a posição de meu objeto e um Vector2D com a sua velocidade. Então os cálculos seriam (corrija-me se eu estiver errado:
E eu então devo usar a classe Rectangle, para detectar a colisão, se ela for detectada, então eu farei Vector2D.normalize() para normalizar o vetor de posição. E em um metódo de atualização como um:
E então no paint component... :
Não sei se estou correto, por favor me corrija se eu estiver errado, mas acho que é isso! Estou aguardando ansiosamente por sua resposta!
Cordialmente,
Gustavo Borba.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/05/2010 18:32:59
|
dudaskank
GUJ Ranger
Membro desde: 12/09/2003 14:59:26
Mensagens: 850
Localização: Suzano, SP, Brasil
Offline
|
Bem, a primeira parte está correta, seu cálculo da velocidade e posição nova estão ok.
Agora, quanto ao tratamento da colisão, não entendi bem se é isso mesmo que você precisa. Quando se normaliza um vetor, ele fica na mesma direção mas de comprimento 1. (http://pt.wikipedia.org/wiki/Vetor_unit%C3%A1rio).
No tratamento de colisões, vai depender do que você vai querer fazer, então não posso dizer se está certo ou errado isso. Se for um jogo, por exemplo, e um dos Rectangle é uma parede e o outro seu personagem: você vai precisar fazer o personagem voltar alguns pontos para que ele não atravesse a parede (a não ser que seja um fantasma ;D).
Para o desenho da tela, sim este modo funciona, é chamado de modo passivo aliás... pode tentar também o modo ativo, que você encontra mais informações por aqui:
http://fivedots.coe.psu.ac.th/~ad/jg/index.html
http://fivedots.coe.psu.ac.th/~ad/jg/ch1/index.html
|
Eduardo Oliveira
Toque a balada do amor inabalável, eterna love song de nós dois...
Página |
|
|
 |
|
|