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. 