Créer des wrap horizontaux et verticaux

Bon, je sais mon sujet n’est peut-être pas très explicite, mais l’inspiration m’a manqué…
Donc voilà : j’aimerais que certaines cartes de mon jeu The Drill soient infinies,
mais celles-ci doivent tout de même garder un fond (image de background),
sachant que celui-ci ne peut pas être fixe, car cela nuit à l’immersion du joueur,
et lui fait penser que son vaisseau n’avance pas, malgré la présence des astéroïdes et autres.

Mais pour cela, je ne peux me permettre de placer des centaines d’images de fonds…
(chacun des mes “morceaux” de ciel fait 1024x1024, au cas où cela intéresserait quelqu’un)
Je voudrais donc que dès que la caméra arrive au bout d’un morceau de ciel, un autre se juxtapose
précisément à ce dernier (supprimant ceux qu’on ne voit plus à l’écran), et ceci aussi bien horizontalement
que verticalement…

A mon avis, il faut que tu positionne tes arrières plans suivant la position du vaisseau, avec une histoire d’arrondi à la clé.

Par exemple, si on considère vouloir avoir un affichage d’arrière plan tel que celui ci :


| Background7 | Background4| Background8 |

| Background3 | Background1| Background2 |

| Background9 | Background5| Background6 |

On devra je pense utiliser quelque chose du genre :

Faire =int(Vaisseau.X()/1024)*1024 à la position X de Background1
Faire =int(Vaisseau.Y()/1024)*1024 à la position Y de Background1
Faire =int(Vaisseau.X()/1024+1024)*1024 à la position X de Background2
Faire =int(Vaisseau.Y()/1024)*1024 à la position Y de Background2
Faire =int(Vaisseau.X()/1024-1024)*1024 à la position X de Background3
Faire =int(Vaisseau.Y()/1024)*1024 à la position Y de Background3
Faire =int(Vaisseau.X()/1024)*1024 à la position X de Background4
Faire =int(Vaisseau.Y()/1024-1024)*1024 à la position Y de Background4
Faire =int(Vaisseau.X()/1024)*1024 à la position X de Background5
Faire =int(Vaisseau.Y()/1024+1024)*1024 à la position Y de Background5
Faire =int(Vaisseau.X()/1024+1024)*1024 à la position X de Background6
Faire =int(Vaisseau.Y()/1024+1024)*1024 à la position Y de Background6
Faire =int(Vaisseau.X()/1024-1024)*1024 à la position X de Background7
Faire =int(Vaisseau.Y()/1024-1024)*1024 à la position Y de Background7
Faire =int(Vaisseau.X()/1024+1024)*1024 à la position X de Background8
Faire =int(Vaisseau.Y()/1024-1024)*1024 à la position Y de Background8
Faire =int(Vaisseau.X()/1024-1024)*1024 à la position X de Background9
Faire =int(Vaisseau.Y()/1024+1024)*1024 à la position Y de Background9

Les arrondis permettant de ne déplacer les arrière plans que par “carrés” de 1024*1024

(pourquoi ne pas déplacer le fond en même temps que le vaisseau du joueur??)

Un peu comme l’exemple de Plateforme2.gdg

Parce que :

Il faut que le vaisseau se déplace réellement par rapport au fond, mais sans avoir à tapisser l’infinité de la scène de fonds.

Voilà, exactement. J’avais peur que mes explications soient un peu floues.

Ah oui merci ! j’avais du mal à créer une pseudo-matrice, et tes formules sont parfaites pour ça.
Je me sens un peu bête du coup.
Maintenant, il faut que je trouve comment faire pour placer ces maps uniquement dans la direction
où se déplace le vaisseau… :cry: Il faut juste que je me m’y mette sérieusement !

Ne déplacer qu’un calque (étoiles par exemple ou planètes??)

Désolé, mais je cernes mal la chose XD

Tu vois l’exemple de jeu de course ?
Le principe est d’afficher de l’herbe en arrière plan de façon illimité, comme si la scène en était recouverte. Mais pour des questions de réalisme, il ne faut pas que l’herbe soit statique, il faut qu’on est l’impression que la voiture se déplace dessus.

Là, c’est pareil :slight_smile:

Ah oui ok je vois, bon, c’est carrément pas encore de mon niveau ça, mais je vois, en gros il veut recouvrir (en reprenant ton exemple d’herbe), un carré d’herbe par un autre et ce progressivement et pour tout ceux d’une certaine zone en vertical et en horizontal c’est ça?

Sinon, ben j’abandonnes, si j’ai toujours pas compris :blush:

Bon, je crois que je suis proche de la solution, voilà mon test en version portable,
si jamais ça peut aider (ou inspirer) quelqu’un (et puis il doit être facile de faire mieux) :
megaupload.com/?d=WK8L1TPY

4ian, tu verras que j’ai essayé de placer un texte sur un calque qui ne bouge pas,
afin de l’avoir constamment en vue. Mais ce dernier s’affiche comme s’il était
placé sur le calque de base, et se trouve donc influencé par la caméra.
Je dois être un peu rouillé, ou j’ai dû rater certaines nouvelles options de caméra,
mais je n’arrive pas à résoudre ce problème… :blush:

C’est moi qui me suit loupé, les calques sont interprétés comme du texte mais n’ont pas été convertis en texte ( Et la fenêtre de choix de calque ne renvoie pas de texte non plus. )

Ah, cette fois, je crois que j’ai trouvé une bonne alternative !
Les formules à trouver sont parfois si simples…
megaupload.com/?d=AW6ZA9VV

Si jamais tu as le temps d’y jeter un coup d’oeil 4ian,
histoire de voir quelle solution est la meilleure à ton avis. :slight_smile:

Eh bien je suis plus rassuré qu’embêté :wink:

De retour de mes mini-vacances ! Allez, un petit up… :blush:

Dans les deux cas, le risque est que si le vaisseau/voiture va trop vite ( Genre si il va à 32 000 pixels/secondes :mrgreen: ), les fond ne sont pas mis à jour ( J’ai eu des ratés avec le second ).
Le must serait peut être d’avoir neuf objets fonds distincts ( C’est un peu plus lourd niveau objet, mais vu qu’on ne fait que mettre à jour leur position ça devrait aller ), et de mettre à jour leur position en fonction de la position du vaisseau.


Moi qui était si fier de ma petite trouvaille…
Mais bon, de toute façon, la vitesse de déplacement du vaisseau est assez limitée dans le VRAI jeu,
et la caméra était très dézoomée. Au zoom 1;1, l’apparition des carrés devrait être invisible, non ?
Non, en fait, c’est juste que je ne vois pas comment m’y prendre avec ta solution… :blush:
Comment déterminer où placer le prochain carré selon la direction du vaisseau, sans mettre
de détecteur avant ? et comment savoir quel carré déplacer dans cette situation ?

J’ai fait un petit exemple. Il est peut être nécessaire de rajouter une rangée/colonne de fond, mais le principe est là.
Après, tu vois ce qui est le plus simple et pratique pour toi.
Wrap.zip (5.13 KB)

Heu, ok… Je me sens tout petit… :blush:
Pourtant si simple… Désolé de t’avoir embêté avec ça.
Merci ! ! !