Estou trabalhando em um jogo em JavaScript e minha implementação atual de colisão usa a menor distância para afastar o objeto que se cruza, o que nem sempre é correto. Eu fiz este diagrama da colisão ideal. A caixa vermelha representa a posição inicial, a caixa verde representa a posição correta e a caixa preta representa o objeto estático no qual está colidindo. A seta azul é o vetor de velocidade. Com minha implementação atual, o objeto seria colocado em sua posição final e empurrado para fora (e, neste caso, seria empurrado para a esquerda)
Como posso consertar isso?