A tarefa não é muito complexa, mas ela mostra como é interessante entender alguns conceitos físicos na hora de pensar em como resolver esse tipo de problema.
A princípio você pode ficar perdido tentando pensar quanto a caixa deve se deslocar e como calcular isso, mas a grande questão aqui na verdade é o tempo.
Vamos usar uma física bem básica, a fórmula da velocidade diz que:
velocidade = descolamento/tempo
- Nós queremos definir a velocidade;
- Nós sabemos que o deslocamento é a distância entre o ponto atual e o alvo;
- Só falta descobrir o tempo!
Obs.: O tempo aqui é a unidade de frame do programa.
Arrumando a fórmula descrita mais acima, temos:
tempo = deslocamento/velocidade
A ideia é simplesmente pegar a nosso deslocamento e a velocidade e usá-los para calcular o tempo:
Essa função é chamada apenas no mouseReleased(); já a função que atualizaria a posição e que seria chamada no draw() seria assim:
Ela é chamada no draw() apenas quando o tempo é diferente de 0, e tem uma correção para parar a caixa no alvo quando o tempo for menor do que 0.
Perceba que após o tempo ter sido calculado e continuar sendo recalculado, é possível calcular a velocidade apenas usando a fórmula v = d/t, nós não temos uma variável guardando a velocidade, mas a própria matemática se encarrega de fazer isso.
O resultado é este:
Nenhum comentário:
Postar um comentário