Há uma dúzia de maneiras pelas quais eu poderia formular essa pergunta, mas para manter meus pensamentos alinhados, eu estou formulando isso de acordo com o meu problema em questão.
Então, eu estou criando uma plataforma flutuante que eu gostaria de poder simplesmente viajar de um ponto designado para outro e, em seguida, retornar ao primeiro e simplesmente passar entre os dois em uma linha reta. No entanto, apenas para torná-lo um pouco mais interessante, quero adicionar algumas regras à plataforma.
- Estou codificando para viajar com múltiplos valores de bloco inteiros de dados mundiais. Portanto, se a plataforma não estiver estacionária, ela percorrerá pelo menos uma largura ou altura do ladrilho inteiro.
- Dentro do comprimento de um bloco, eu gostaria que ele acelerasse de uma parada para uma determinada velocidade máxima.
- Ao atingir a distância do comprimento de um bloco, eu gostaria que ele diminuísse até uma determinada coordenada de bloco e repita o processo ao contrário.
As duas primeiras partes não são muito difíceis, basicamente estou tendo problemas com a terceira parte. Gostaria que a plataforma parasse exatamente em uma coordenada de bloco, mas como estou trabalhando com aceleração, parece fácil simplesmente aplicar a aceleração na direção oposta a um valor que armazena a velocidade atual da plataforma assim que atingir o comprimento de um bloco de distância (supondo que o bloco esteja viajando mais do que um comprimento de bloco, mas, para simplificar, vamos assumir que sim) - mas a questão é: qual seria o valor correto para a aceleração aumentar para produzir esse efeito? Como eu encontraria esse valor?
acceleration = desired_velocity - currentVelocity
seguida, aplique essa aceleração como faria normalmente. Vou criar uma resposta mais adiante, mostrando o que faço.