Eu espero que todos nós tenhamos jogado Zelda: A Link to the Past, por favor, me corrija se eu estiver errado, mas quero imitar esse tipo de movimento de personagem 2D de cima para baixo com um toque de correção. Isso já foi feito em outros jogos, mas acho que essa referência seria a mais fácil de se relacionar. Mais especificamente, o tipo de movimento e correção de que estou falando é:
- Movimento flutuante não restrito ao movimento baseado em ladrilhos, como Pokemon e outros jogos em que um toque no bloco de movimento move você um quadrado nessa direção cardinal. Esse movimento flutuante deve ser capaz de obter movimento diagonal.
- Se você estiver caminhando para o oeste e chegar a um muro diagonal da maneira Nordeste / Sudoeste, você será corrigido para um movimento Sudoeste, mesmo se continuar segurando a esquerda (Oeste) no controlador. Isso deve funcionar para as duas diagonais, corrigindo nas duas direções.
- Se você estiver a alguns pixels de caminhar diretamente para uma porta ou corredor, será corrigido para caminhar pelo corredor ou pelo corredor, ou seja, esbarrar no canto faz com que você seja empurrado para o corredor / porta.
Procurei maneiras eficientes de conseguir isso e não tive sorte. Para deixar claro, estou falando do movimento do personagem humano, não do movimento de um NPC. Seus recursos estão disponíveis nesse tipo de movimento? Equações ou algoritmos explicados em um wiki ou algo assim?
Estou usando o XNA Framework, existe algo para ajudar nisso?