Estou escrevendo um jogo XNA de cima para baixo em 2D. Desde o meu primeiro, estou tentando escrever as coisas da física e da colisão para aprender.
Sempre que meu personagem sprite de jogador tenta se mover para uma posição em que seus limites se cruzam com a borda de uma parede, descubro um ângulo de rebatimento (ângulo de incidência = ângulo de reflexão) e faço o jogador saltar da parede e evitar a colisão .
Estou tendo problemas para descobrir como lidar com a situação do meu sprite se cruzando com duas arestas da parede simultaneamente, por exemplo, quando atinge um canto.
Atualmente, meu código me diz que duas arestas da parede foram cruzadas, mas não em qual aresta ele teria atingido primeiro e, portanto, em que aresta ricochetear.
Qual é o teste matemático para escolher qual borda rebater? É fácil ver quando olhamos para ele, mas estou lutando para descobrir o teste de matemática para ele.