Lógica de simular salto no OnDraw

Consegui desenhar um objeto caindo até colidir com outro e parar. A intenção era fazer uma movimentação de plataforma. Quando toco na tela o objeto pula, mas eu queria realizar um pulo mais suave, e do jeito que fiz o objeto some da tela e cai devagar até tocar o chão. Segue abaixo a lógica:

```
//isso é a lógica da view
if(player.colideCom(chao)){
            player.pula();
        }

//isso é a lógica do salto
public void pula() {
        for(int i=0;i<100;i++){
            y+=i;
        }
    }
```

quando atinge o 100 o objeto deveria cair. Mesmo o objeto caindo da forma certa, para subir está subindo de uma vez. Alguém consegue dizer o problema nessa lógica? Desde já agradeço.

E qual é a lógica da descida ?

Provavelmente isso se da ao fato de ser por for, ou seja, vai do processador do celular. Executar de 0 a 99 pra um processador é um trabalho que não demora nem 1s.

Na verdade é um problema de lógica somente. Eu até consegui resolver. Na descida, a cada incremento, eu limpo a tela e desenho denovo, por isso a descida fica suave. Mas o salto eu fiz um laço ao clicar na tela. Então o laço executa todo primeiro para depois desenhar e eu tive que mudar esse laço. Mesmo assim não ficou bom do jeito que eu quero pois ao saltar o objeto agora fica flutuando. Mais um problema de lógica. Acho que vou ter que repensar toda a lógica do salto.

//ao clicar na tela faz objeto saltar
        public boolean onTouchEvent(MotionEvent event) {
        if(player.colide(chao)){
            limiteSalto = player.y-300;
        player.salta();}
        return false;
    }

//logica da física do objeto
if(!player.colide(chao)&&!player.saltou) {
            player.cai();
        }else
        if(player.saltou&&player.y>limiteSalto){
            player.sobe();
        }

Acabou que deu certo fazendo o seguinte.

//ao tocar a tela faz objeto saltar
if(player.colide(chao)){
        player.salta();
        limiteSalto = player.y-300;
        }

//logica da física do objeto
if(!player.colide(chao)&&player.saltou) {
            if (player.y > limiteSalto) {
                player.salta();
                } else {
                player.cai();
                player.saltou = false;
            }
            }else if(player.colide(chao)) {
                player.saltou = false;
            }else{player.cai();
        player.saltou = false;
}

Mesmo assim agradeço a atenção. :grinning: