[Résolu] Chronomètre

Bonjour,

Sur ma carte j’ai 3 arbres. Ces arbres produisent des fruits, et mon personnage peut les ramasser en cliquant dessus.
Une fois ceci fait, le fruit devient invisible, le chronomètre se remet à zero, et lorsqu’il atteint 5 secondes, le fruit redevient visible.

Le problème est que, ayant 3 arbres donc 3 fruits, si je les ramasse tous il redeviendront visibles en même temps chose qui ne devrait pas se passer.

Alors comment faire en sorte que chaque fruit ait son chronomètre, tout en sachant que je n’ai pas envie d’en créer un pour chaque (imaginez avec 75 arbres/fruits).

Merci

Salut,

[size=150]Qu’est-ce qu’une variable d’objet ?[/size]
Tu connais les variables d’objets ? Ce sont des variables (des tiroirs qui possèdent un nom, comme une étiquette, et une valeur stockée à l’intérieur) qui sont propres à chaque objet. Par exemple, si il y a des soldats dans ton jeu, chacun peuvent, par exemple, avoir leur variable “vie” qui stocke un nombre contenant leur nombre de points de vie.

[size=150]Système d’identification (ID)[/size]
Tu dois donc utiliser ces variables d’objets pour tes arbres. Tu peux te demander pourquoi cela. En fait, nous allons affecter un numéro à la variable d’objet de chacun des arbres. Chacun de ces arbres aura un numéro qui lui est propre et qui est unique. (un arbre aura le numéro 0, un autre le numéro 1, un autre le numéro 2…). Pour faire cela, tu dois faire cela au lancement de la scène :
[attachment=1]SceneLaunching.png[/attachment]
(Fais bien attention aux indications que j’ai mis)
(L’événement “Pour chaque objet” est accessible à l’ajout via le bouton “Autre” à côté de “Sous-événement”)

Maintenant, tous tes arbres ont un numéro (appelé ici “id” (identificateur)) unique.

[size=150]Les chronomètres avec les ID[/size]
Maintenant, tu vas utiliser les id (la variable d’objet “id”) avec les chronomètre. Tu va faire en sorte qu’il y ait autant de chronomètres que d’objets arbres, mais tout cela en 1 seul événement ! :smiley:
Grâce aux variables d’objets id de chacun des arbres, on va pouvoir tout faire en 1 seul événement, étonnant non ? :sunglasses:

Mets donc cela :
[attachment=0]BoucleOnArbre.png[/attachment]

Voilà, on utilise les expressions pour le nom du chronomètre :

"PommeArbreID" + ToString(arbre.Variable(id))

Déjà, le chrono aura le nom “PommeArbreID… quelquechose…”.
Ensuite, ToString(…) permet de convertir un nombre en un texte.
arbre.Variable(id) permet de récupérer le contenu de la variable “id” de l’objet arbre (donc notre fameux identificateur)

Tu as sans doute remarqué que c’est un événement Pour Chaque objet arbre, cela permet à GD de traiter cas par cas chacun des arbres. (cet événement est accessible à l’ajout via le bouton “Autre” à côté de “Sous-événement”)

Normalement, si je me suis pas planté (j’ai pas testé), ça devrait marcher.

[size=150]A faire (important !)[/size]
Il faut que tu rajoutes les conditions permettant de faire en sorte que l’arbre ne produise plus de pomme dès qu’une a été produite par ce dernier. Il faut aussi que tu fasses en sorte que l’arbre récréée une pomme (quelques sec après) dès que la pomme de ce dernier a été récoltée. Pour cela, utilise un système d’ID (du même genre que cela que j’ai fait pour les arbres).

Si tu as des questions concernant ma proposition, ou si cela ne marche pas, n’hésite pas à poster et met une capture d’écran des événements. :wink:

Waw merci ca marche impeccablement bien ^^

Juste une erreur, tu as mis “remettre à zéro le chrono” après avoir créer la pomme, pour que cela marche il faut le mettre plutôt après l’avoir supprimer (lorsque le PJ récolte le fruit).

Un grand merci :slight_smile:

De rien :wink:

Tu as fais gaffe à ce que les pommes ne soient pas produites à l’infini par les arbre ?

Un pommier tant que c’est pas mort ça donne des fruits victor…

Les fruits repoussent à l’infinie pour les besoins de mon projet. Mais le temps d’attente est assez long pour compenser.

Ok,

Sinon, si tu veux faire apparaître des arbres en jeu, il faut modifier ces événements (en particulier, l’événement qui est exécuté au lancement de la scène) pour que ça marche.

Dans ce cas, ce serait : (ça peut toujours te servir si des objets apparaissent en cours de jeu)
[attachment=0]SceneLaunchingWithInstantIDAffectation.png[/attachment]

Utilises cela seulement si des objets sont crées pendant que le joueur joue au jeu (si par exemple, le joueur peut planter des arbres)

Alors oui effectivement j’avais penser à ce que le PJ puisse couper les arbres et en replanter autre part.
Le problème, et c’est pourquoi je ne m’y attarde pas encore, c’est qu’il fallait créer des ID (grâce à toi je peut enfin le faire) mais également il faut gérer les plans entre un arbre qui pousserait devant un autre ou derrière, ou le fait que le PJ plante un arbre tellement proche d’un existant qu’ils se confondent … Je pense savoir qu’il faut faire des conditions avec les X et Y mais pour l’instant je ne m’y attarde pas, le PJ pourra simplement couper, mais pas replanter.

Ok, un truc que j’utilise pour mes jeux en 3D iso :
J’affecte la position Y de l’objet + sa hauteur à son plan (comme ça, plus il est vers le bas, plus il est haut et donc devant les autres éléments).

A ouais pas bête du tout, je n’y avais pas penser. Merci je testerais quand je pourrais.