Comment pourrais-je mettre en œuvre une route sans fin que le joueur court?

17

Je veux créer l'illusion qu'un homme court sur une longue route, c'est-à-dire cette photo

http://camlinecambridgelimited.web.officelive.com/images/road%20graphic1.jpg

Si vous avez joué à Temple Run sur iPhone, c'est le même principe, mais au lieu d'un temple, c'est une route normale.

Je veux savoir comment cela est mis en œuvre. Par exemple, dois-je simplement répéter cette image de route en boucle?

Salomon
la source

Réponses:

16

Je dessinerais un seul quadruple texturé sur le sol (c'est-à-dire allongé sur le plan XZ), aussi grand que la zone visible devrait être, puis je jouerais avec les coordonnées de texture des sommets (avec le mode d'adressage de texture réglé sur envelopper ) afin de s'occupe automatiquement de la répétition de la texture et du défilement de la texture .

  1. Pour la répétition au lieu de définir votre coordonnée de texture verticale de [0 à 1], définissez-la de [0 à N] où N est le nombre de fois que vous souhaitez que la texture se répète. Ajustez cette valeur en fonction de la hauteur de votre quad par rapport à la hauteur de votre texture.
  2. Pour faire défiler, je ferais simplement défiler la coordonnée verticale de la texture, de sorte qu'au lieu de [0 à N], elle irait de [inc à N + inc], la valeur de inc étant incrémentée ou décrémentée à chaque image. De temps en temps, j'enroulais inc à l'origine pour éviter les débordements / débordements.

EDIT J'ai juste essayé de l'implémenter exactement comme je l'ai décrit (mais dans XNA) et cela a très bien fonctionné. Voir cette vidéo de la démo. Code source ici pour les personnes intéressées.


Par exemple, avec N égal à 3, vous obtiendrez quelque chose comme l'image ci-dessous (j'ai peint la section centrale en rouge pour que vous puissiez voir où la répétition se produit). Ensuite, changer simplement la valeur de inc ferait défiler la route dans un sens ou dans l'autre, selon que vous l'avez incrémentée ou décrémentée.

entrez la description de l'image ici

David Gouveia
la source
La même technique peut être utilisée pour simuler l'animation des fils de cuve. Bien sûr, cela ne sera pas utilisable si vous modélisez chaque segment de chaîne ...
Exilyth
1

Si vous voulez créer une route sans fin "pour de vrai", vous créez trois surfaces et les faites boucler lorsque chaque surface se déplace hors de la vue. Placez les surfaces bout à bout dans l'espace mondial et déplacez-les toutes vers la caméra. Lorsque l'extrémité la plus proche se déplace hors de la caméra, réinitialisez sa position à l'extrémité de la surface la plus éloignée.

Si vous souhaitez l'implémenter comme un sprite avec l'illusion du mouvement, vous devez créer un certain nombre de textures différentes, qui devraient ressembler à ceci:

Au fur et à mesure que la vue avance, parcourez les textures dans l'ordre.

Kitt Basch
la source
0

La répétition de l'image est une bonne idée. Déterminez combien de répétitions doivent être visibles à l'écran et dessinez l'image autant de fois. Au fur et à mesure que la route défile, il y aura un point où une image sera complètement derrière la caméra et donc invisible. À ce stade, vous souhaitez déplacer cette image de l'arrière de vos pieds vers l'extrémité de votre bande d'images finies.

Pendant que nous y sommes, vous en tirerez le meilleur effet en imitant la perspective instable d'un homme qui court. Enregistrez un film de vous en train de courir du point de vue de vos yeux et étudiez-le.

Stefan Majewsky
la source
2
Cela ne fonctionne pas vraiment, car son image est une perspective. Il aurait besoin de différentes images pour jouer en animation.
Bobby