Animal Crossing a une façon unique de faire défiler la carte du monde: lorsque le personnage descend, le monde tourne autour et au sommet, comme s'il était collé à un tube en carton:
Cette vidéo montre comment il se déplace.
Comment puis-je créer cet effet?
Réponses:
J'expérimentais un peu après avoir joué à Deathspank, ce qui a un effet similaire. Bien que je ne l'ai jamais suffisamment exploré pour voir s'il peut être réglé pour fonctionner très bien, une possibilité consiste à simplement modifier les éléments de votre vertex shader en fonction de la profondeur. Une fonction mappant cos (profondeur) à une modification de l'axe Y fonctionne. Vous pouvez l'ajuster de telle sorte que le monde tombe non seulement au loin, mais aussi s'il est plus proche que la profondeur, ce qui rend le monde particulièrement rond. Vous pouvez faire de même pour la valeur de l'axe X pour la rendre plus sphérique. Je ne sais pas si c'est ainsi que ces jeux le font réellement; mes expériences ont donné des résultats insatisfaisants mais je n'ai pas beaucoup joué avec les ratios, donc cela a peut-être été aussi simple que de changer le taux de chute pour le rendre meilleur.
la source
On dirait qu'il suffit de prendre un "monde plat" et de cartographier des coordonnées cylindriques . Enveloppant essentiellement le monde sur un cylindre. J'ai fait quelque chose de similaire avec un monde plat, mais je l'ai enveloppé dans une sphère:
La façon dont je l'ai fait pour une sphère est similaire à la façon dont vous le feriez pour un cylindre. Choisissez un rayon approprié (ρ ou "rho" en coordonnées cylindriques) pour votre monde. Pour chaque sommet, prenez les coordonnées XZ de votre monde (en supposant que Y est la hauteur), puis convertissez-vous en coordonnées cylindriques en utilisant le XZ et le rayon plus Y. Si vous n'ajoutez pas le Y, vous obtiendrez un cylindre plat. Puis reconvertissez les coordonnées cartésiennes pour dessiner dans le jeu.
la source
Vous voulez passer d'un monde planaire à un monde cylindrique.
Une rotation autour de l'axe x (en coordonnées homogènes) ressemble à ceci:
Où:
Pour calculer l'angle, regardez l'image. Le pi / 2 s'annule et vous vous retrouvez avec:
Regardez aussi l'image. L'angle du point projeté dépend de la distance horizontale du personnage, la distance de la sphère dépend de la verticale.
assurez-vous de supprimer les choses qui se trouvent à l'horizon, sinon le monde entier s'enroulera.
Avertissement: je n'ai pas testé cela et je ne suis pas un expert en mathématiques, mais la réponse est quelque chose comme ça. Quelqu'un, s'il vous plaît, corrigez-moi si je me trompe.
la source