Estou fazendo um jogo isométrico. Quando o jogador tenta andar diagonalmente contra uma parede, quero que deslizem suavemente sobre ela, para que qualquer parte do movimento seja legal e usada, e qualquer coisa na direção do normal é jogada fora. As paredes podem ser de qualquer ângulo, não apenas verticais ou horizontais, e o player possui 360 movimentos.
Sinto que estou quase lá, mas não consigo colocar a última peça no lugar.
Atualização: boas notícias a todos! Eu tenho isso funcionando. Mas ... estou um pouco confuso sobre o que deveria estar normalizando e o que não. O normal só precisa ser um vetor de unidade, certo? mas então eu estou misturando isso com a minha entrada, então estou normalizando isso - estou errado?
A propósito, também descobri que preciso empurrar o player 1 pixel na direção normal, para que eles não fiquem presos às coisas - funciona bem.
fonte
desiredMotion
resultados realmente estranhos . Você já conseguiu isso funcionando?Embora seja simples remover o componente do movimento que está na direção normal, pode ser adequado à sua jogabilidade girar o vetor de movimento. Por exemplo, em um jogo de ação na terceira pessoa, pode ser fácil ficar um pouco pendurado nas paredes e em outros limites, para que você possa adivinhar o que o jogador pretende.
fonte