Função pular no Greenfoot

3 respostas
C

Olá!

Estou tentando fazer um sprite pular tendo em consideração a gravidade, mas não consigo. Quando vou simular no greenfoot ele trava.
Aqui está o meu código. Obrigada!

Coloquei comentário no que tentei fazer para facilitar a compreensão.

public void act(){
       if (Greenfoot.isKeyDown("space")) {
           pula();
       }
}
private void pula() {
       double h0 = getY();              //posição inicial
       double g = 1.5;                    //gravidade
       int t = 1;                             //retorna a posição final de 1 em 1 segundo
       double h = 0;                       //posição final
       double v0 = -0.5;                 // velocidade inicial, considerando que é contrária ao movimento
       double altura = getY()-5;      // altura máxima que eu quero que chegue.

       while(h!=altura||h<=altura){
            h = h0+v0*t+0.5*g*t*t;     //posicao final recebe nova posição.
           v0 = v0+g*t;                     // velocidade inicial aumenta
           h0 = h;            
           x = getX();
           y = getY()+(int) h0;
           setLocation(x,y);               //retornaria a posição nesse momento
       }
}

Bem, o que tentei fazer foi o seguinte.
Não incrementei o t porque queria que acontecesse de 1 em 1 segundo. Ou seja, a posição inicial, recebe a posição final e acaba recomeçando dali o movimento que vai durar 1 segundo.
Daí coloquei um limite de altura, pois quando a posição final chegar nessa altura, é hora de descer.

Onde estou errando?

3 Respostas

Alberto.S

Talvez aqui seja melhor:

http://groups.google.com/group/greenfoot-discuss

douglaskd

http://www.greenfoot.org/doc/videos.html

escolha o video: Platform games: running, falling and jumping

interessante…

C

Muito obrigada douglaskd, está sendo muito útil.

Criado 18 de novembro de 2010
Ultima resposta 19 de nov. de 2010
Respostas 3
Participantes 3