Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvidas quanto a lógica do Desenho

Não tem muito a ver com o curso e sim com o que tenho aprendido com o curso. Consegui fazer 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.

1 resposta
solução!

Olá Bruno,

O que está acontecendo é que a posição do seu objeto está sendo atualizada até o fim dentro do mesmo quadro de animação do seu jogo. Quando você invoca o método pula(), a posição y do objeto vai ser atualizada até que o for seja encerrado antes que o próximo quadro de animação seja desenhado na tela.

O que pode ser feito é fazer a soma da posição y aos poucos. Suponha que você faça y+=1 durante 100 quadros de animação. Então em cada novo quadro você vai perceber o objeto subindo. Quando o y chegar na posição esperada, aí você precisa fazer com que ele comece a descer novamente, aí é só ir fazendo y-=1 até ele chegar ao chão de novo. Perceba que o problema é fazer o for no pula(). Lembre-se que o seu código vai ficar travado no for, o y vai ser atualizado até o fim e só depois o código vai prosseguir e desenhar o resultado na tela.

Claro que dá prá deixar o comportamento mais realista levando em conta a aceleração do objeto e também o efeito da gravidade mas recomendo primeiro fazer algo mais simples e depois ir tentando melhorar a lógica.