Gravidade x Atrito x Aceleração x boucing

Alguem sabe algumas formulas para isso?
sei que já existem diversas APIS como as que o JMonkey usa…
mas queria apenas as formulas matematicas…
fazia isso no Flash…em action script…
mais perdi…
:wink:
Há! é pra fazer jogo SIM!!!
haehhahehaehhaehae

Abs

Que tal olhar num livro de física? No caso dos jogos, um de segundo grau mesmo serve!

Eu geralmente faço isso.

[quote=ViniGodoy]Que tal olhar num livro de física? No caso dos jogos, um de segundo grau mesmo serve!

Eu geralmente faço isso.[/quote]

Com certeza o livro de fisica não vai me explicar como aplicar as formulas em Java.

Obrigado.

[quote=dyorgio]

Com certeza o livro de fisica não vai me explicar como aplicar as formulas em Java.

Obrigado.[/quote]

Bom dia,

Qual é o grande causo em colocar as fórmulas de um livro no código? Identifique os valores e faça métodos que trabalhem eles de uma maneira mais ampla. Em caso de dúvidas em como implementar, é só perguntar, mas já dá para começar a fazer partindo somente das fórmulas do livro de física.

Até!

Quando alguem souber favor postar aqui

  1. Estude a física por trás desses fenômenos;
  2. Monte o seu sistema de equações baseada na física;
  3. Estude como passar as equações da forma analítica para a forma numérica - isso vc encontra em livros de calculo numérico;
  4. Simplifique o que vc puder, e tenha em mente que se escolher intervalos ou valores muito pequenos vc pode propagar erros estranhos na posição das particulas ou corpos que vc está controlando;

É claro que estamos falando de uma particula em um campo de forças bem comportado. Se for um corpo vc tem outras quantidades que influenciam como ‘momento angular’ e ‘momento de inêrcia’. Sem saber fisica, java é irrelevante no que vc se propõe.

Adoro vocês do GUJ…sempre ajudando…¬¬
mas pelamordedeus…
se alguem souber alguma formula pronta…
tipo…
pra eu mover um bonequinho da tela e ele dar um pulo…
postem!!!
agora…se for pra me dizer como fazer …se for pra ficar viajando na fisica de inercia, movimento…particulas…
não escrevam…guardem o conhecimento pra vocês…
3 pessoas escreveram no tópico…e não responderam o que eu perguntei…
agora eu tenho um tópico todo sujo…
obrigado

Desculpe, mas aqui não creio que aqui seja consultoria grátis.
Se quiser sua resposta pronta e feita recomendo:
www.experts-exchange.com e www.google.com.br

Se tiver um pouco mais de paciência, pegue o fonte de um joguinho e analise as funções que ele usa.

Depois xingam porque tem “figurinhas” que são mau-educados.

Você é uma figura…
estou solicitando código…
já procurei …alias em muitos outros sites de código fonte…
mas não achei,
se você não tem…
não entre no tópico

capisco? OO

Então ao invés de reclamar, formule melhor suas perguntas.

Qualquer formula de “arremesso vertical” resolve o que você quer.

Cara pesquise pela API GTGE. Eles tem exemplos de movimentação, gravidade, etc prontos, é só você baixar, rodar os exemplos, e verificar os fontes.

Dyorgio , não fique nervoso. Geralmente qdo se faz uma pergunta muito subjetiva, as respostas são desse tipo.

Caso vc colocasse aí o código e perguntasse sobre algum bug, alguma dúvida ou o porque disso ou daquilo, teria respostas melhores.

Não seja rude com as pessoas que vem no forum com o intuito de ajudar, tirar dúvidas e contribuir com essa enorme base de conhecimento que temos aqui.

Abraços.

[quote=dyorgio]agora…se for pra me dizer como fazer …se for pra ficar viajando na fisica de inercia, movimento…particulas…
não escrevam…guardem o conhecimento pra vocês…
3 pessoas escreveram no tópico…e não responderam o que eu perguntei…
agora eu tenho um tópico todo sujo…
obrigado[/quote]

Não, não vou guardar, conhecimento não ocupa espaço e nem pesa, respondi o que vc perguntou, só não te dei nada pronto pra vc fazer Ctrl+C / Ctrl+V.

Comece estudando o movimento parabólico:

Isto é, se vc tem capacidade para isso, se não tem, então vamos começar por algo mais simples e identifique as suas dificuldades, preenchendo as lacunas do seu conhecimento na medida do possivel (o que também pode ser feito no GUJ).

E evite topicos sujos com este tipo de comentário mediocre.

Por exemplo, no método update do seu código, para fazer um delocamento em mru:

public void update() { x = x + vx; y = y + vy; }

Agora, se você quer que exista gravidade. Lembre-mos que a gravidade é uma força constante, que força um mruv, ou seja a velocidade varia a cada instante de tempo t. Quer dizer, a cada chamada de nosso update.

public void update() { vy = vy - g; x = x + vx; y = y + vy; }

Não tem muito segredo. Veja o que diz o algoritmo da física a cada instante t, tente adaptar isso para o método update do seu móvel em questão.

No caso da bola quicar, existe outra força envolvida. A mesmo que deu um impulso inicial para baixo (que pode ter sido criada através do momento da bola e da gravidade). Nesse caso, essa força deve ser invertida.

Acho que não preciso dizer que vy e vx são atributos de sua classe que definem a velocidade em x e y do seu objeto móvel.

Agora… como fazer isso em java…
Bem, os algoritmos acima assumem que você tem uma taxa de updates por segundo constante, como proposto no livro Killer Programming in Java.

Se você estiver trabalhando com updates variáveis, seu método update vai ter que receber também um delta T, e você terá que ajustar o tamanho do deslocamento de acordo com esse delta, o que levaria a fórmulas ligeiramente diferentes.

Como eu disse, melhor mesmo é pegar um livro de física, entender o que acontece a cada instante de tempo e implementar. Tem que lembrar que a física do jogo também não precisa ser tão rigorosa quanto a real. Mesmo porque, se ficar rigorosa demais, pode perder a graça… já pensou se o Mario só pulasse bem baxinho? :wink:

Você pode ler o livro Killer Game Programming in Java no site do próprio autor:
http://fivedots.coe.psu.ac.th/~ad/jg/

Talvez encontre algoritmos prontos por lá.

Ah sim, e eu só respondi sobre o livro de física pois como você mesmo disse:

[quote]Alguem sabe algumas formulas para isso?
sei que já existem diversas APIS como as que o JMonkey usa…
mas queria apenas as formulas matematicas[/quote]

Leia bem o que pediu…

Exemplo de Jogos ajuda ?

https://ping.dev.java.net/
https://genuts.dev.java.net/

Boa sorte! :thumbup:

Dê uma olhada aqui:
http://web.kellegous.com/ecrits/000858

Coloquei o fonte dessa página aqui no anexo. É em java.

Dá uma olhada aqui:

… naum sei programar jogos… mas adoro jogar… conheço vários jogos feitos em flash e que acredito não serem difíceis de implementar em java… por mais que vc não tenha uma animação montada num “stage” em swf… procure códigos fontes em outras linguagens… e tene adaptar… jogos do tipo mario e sonic que tem pulos e velocidade vc encontra de kilo na net… usar um descompilador flash também não é difícil…

fica só uma sugestão de algo que sei que não é impossível e nem tão difícil de fazer… adaptar códigos de outras linguagens para as que a gente usa, pelo menos para mim, é uma boa prática…

[]'s

PS: vinicius, parabens pelo blog, add Bookmark now… =]

[quote=ViniGodoy]Dá uma olhada aqui:

Cara, não entendi uma coisa no seu código.

[code]while (isRunning) {
long beforeTime = System.currentTimeMillis();

game.paintGraphics();
game.updateLogics();

long afterTime = System.currentTimeMillis();
long sleepTime = beforeTime - afterTime;
if (sleepTime &gt 0)
   sleep(40 - sleepTime);

}[/code]
1- O sleepTime não deveria ser o contrário? O instante final menos o inicial?
2- Por que o teste sleepTime &gt 0 ? Isso não é sempre falso? Ou sempre verdade, caso inverta a operação do sleepTime.
3- O teste não deveria ser se o sleepTime é maior que o DESIRED_UPDATE_TIME ? Algumas vezes, o parâmetro para Thread.sleep() acaba sendo negativo.

Os códigos mais elaborados também estão dessa forma.

Valeu :slight_smile: