Besoin d'un coup de pouce sur Construct 2 ? C'est par ici !
Avatar de l’utilisateur
par ColChope
#26627 Bonjour à tous,

Je m'entraîne sur un projet de scroller, un peu à la doodle jump, mais avec des murs sur les côtés.
Je souhaite donc créer, tout le long de mon niveau, pas forcément infini mais assez haut, des murs.

Plutôt que de créer un sprite mur et de l'étendre grandement vers le haut, j'essaye de faire apparaître un sprite du mur au dessus du précédent, dès que le haut de ce dernier est atteint par le haute de l'écran, de telle sorte que le mur paraisse continu.

En soit j'ai déjà réussi à le faire, mais mon système crée une infinité de mur, ce qui évidemment ne sera pas très optimal.
Je cherche donc à pouvoir distinguer les différents sprites du mur créés, grace à leur UID.
J'explique ce que je compte faire :

Au début, on commence avec 1 sprite de mur. Le joueur saute et monte dans le niveau (considérez que c'est un doodle jump). A un certain moment, le haut de l'écran va atteindre le haut de mon sprite de mur numéro 1 (N1). Donc je vais créer pile au dessus, un mur N2. Puis une fois que le haut de l'écran atteint le haut du mur N2, j'en crée un N3, et ainsi de suite.

Donc, je compte faire ce système :
If ViewportTop(0) <= Sprite(N).Y (le N-ième sprite de mur): create Sprite(N+1)

Sauf que justement, je ne sais pas comment exprimer Sprite(N).Y avec une expression correcte.

Quelqu'un aurait une idée ?

Merci par avance !


PS: D'ailleurs, je n'ai pas demandé, mais peut être que vous voyez une méthode plus simple de créer ce système ?
Avatar de l’utilisateur
par Deakcor
#26628 Ça me paraît bien compliqué mais je vais y réfléchir ( faut aussi penser à détruire ceux qui sortent de l'écran ) c'est possible d'avoir le capx ou pas ?
Avatar de l’utilisateur
par ColChope
#26629 Non justement, j'aimerai que le joueur puisse redescendre facilement, pour l'instant du moins.

Après, c'est pas forcément la meilleure solution, sachant que les niveaux ne seront pas infinis, c'est juste que je pensais que ça allait être plus simple comme ça.

Et pour le capx, si tu veux, mais en gros il se résume pour l'instant au template "Infinite jumping" proposé par Construct auquel j'ai enlevé des choses, donc bon
Avatar de l’utilisateur
par Deakcor
#26630 Attend mais pour tes murs la se sont des fonds d'écrans? j'ai pas tout compris
Avatar de l’utilisateur
par Deakcor
#26632 Donc pourquoi le sprite n+1 doit être pile au dessus? Sinon avec la commande pick highest id tu peux le faire je pense.

Mais j'y pense dans ce genre de jeu il vaut mieux que ce soit le background qui bouge ( les plateformes aussi ) que le personnage
Avatar de l’utilisateur
par ColChope
#26633 Non, il ne doit pas nécessairement être pile au dessus, il peut chevaucher le précédent.
Mais il faut garder en tête que plus tard ce mur qui pour l'instant est un sprite de couleur uni, sera un sprite de mur, donc avec des motifs qui se répètent et qui doivent bien s'arranger ensemble.

Pour l'instant, les niveaux seront assez petits, je pense que c'est mieux pour moi que je fasse bouger le personnage plutôt que le décors.
Avatar de l’utilisateur
par Mrx32
#26644 Au Hazard avec la fonction self.X et self .Y que tu insère quand tu doit positionner l'objet comme sa je pense qu'il va le placer suivant ta position mais a + X de l'autre

ex set position to ---> self.x +10
self.y+20

mais il faut le créer ton objet avant et le position avec la fonction set position to il n' y a qu'a ce moment que tu peux l'avoir
(Mais après je viens juste de découvrir cette fonction donc je peux me tromper.... ) euh))
Avatar de l’utilisateur
par Dupat
#26649 Salut
J'ai une proposition si tu veux ^^
Sans etre obligé de créer des objet , tu repositionnes ton mur de la valeur de la taille de ta texture a chaque fois que ton player dépasse celle ci ..

J'ai fait un exemple parce que j'ai conscience que ça peut etre compliquer a comprendre ^^ en plus j'explique mal :p
Dans l'exemple j'ai mis une texture de 640x640 dans un tiledbackground , celle ci est répétable.
Mon objet tiledbackground je lui ai donné 3 fois la taille (en hauteur) de la texture pour etre sur que ça remplisse bien l'ecran.
A chaque fois que mon player va dépasser la taille de ma texture (soit 640px sur Y) je replace mon objet tiledbackground 640px plus haut.

Evidement ton projet ne doit pas avoir les meme valeurs ni tes textures , mais voila ... si ça peut te servir , a toi d'adapter la technique a ton projet
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.