O Animal Crossing tem uma maneira única de rolar o mapa do mundo: quando o personagem se move para baixo, o mundo rola repetidamente no topo, como se estivesse preso a um tubo de papelão:
Este vídeo mostra como ele se move.
Como posso criar esse efeito?
Respostas:
Eu estava experimentando um pouco depois de jogar Deathspank, que tem um efeito semelhante. Embora eu nunca tenha me aprofundado o suficiente para ver se poderia ser ajustado para funcionar super bem, uma possibilidade é apenas modificar itens no seu shader de vértice com base na profundidade. Um mapeamento de função cos (profundidade) para uma modificação no eixo Y funciona. Você pode ajustá-lo de forma que o mundo não apenas caia à distância, mas também se estiver mais próximo do que um pouco de profundidade, fazendo o mundo parecer especialmente redondo. Você pode fazer o mesmo com o valor do eixo X para torná-lo mais esférico. Não tenho certeza se é assim que esses jogos realmente o fazem; minhas experiências deram resultados insatisfatórios, mas eu não brinquei muito com as proporções; portanto, pode ter sido tão simples quanto alterar a taxa de queda para torná-la melhor.
fonte
Parece que está apenas pegando um "mundo plano" e mapeando para coordenadas cilíndricas . Envolvendo essencialmente o mundo em um cilindro. Fiz algo semelhante com um mundo plano, mas envolvi-o em uma esfera:
O jeito que eu fiz isso para uma esfera é semelhante ao que você faria com um cilindro. Escolha um raio adequado (ρ ou "rho" em coordenadas cilíndricas) para o seu mundo. Para cada vértice, pegue as coordenadas XZ do seu mundo (assumindo que Y é a altura) e depois use as coordenadas cilíndricas usando o XZ e o raio mais Y. Se você não adicionar o Y, obterá um cilindro plano. Em seguida, converta novamente em coordenadas cartesianas para desenhar o jogo.
fonte
Você quer ir de um mundo plano para um mundo cilíndrico.
Uma rotação ao redor do eixo x (em coordenadas homogêneas) é assim:
Onde:
Para calcular o ângulo, observe a imagem. O pi / 2 é cancelado e você fica com:
Além disso, olhe para a imagem. O ângulo do ponto projetado depende da distância horizontal do personagem, a distância da esfera depende da vertical.
certifique-se de selecionar as coisas que estão além do horizonte, caso contrário, o mundo inteiro se envolverá.
Isenção de responsabilidade: não testei isso e não sou especialista em matemática, mas a resposta é mais ou menos assim. Alguém por favor me corrija se eu estiver errado.
fonte