[Résolu] Compter des objets créés dans une zone


#1

Bonjour,

Je débute sur GDevelop et j’essaie de développer une application pour les élèves d’élémentaires : “fleurs des nombres 99”.

Je suis bloquer pour comptabiliser des objets créés et dans une zone précise.

IMG_0940

Sur la partie gauche en bleue, il y a des boutons fixes (1, 2, 3…).
Ce sont des sprites sans comportement : bouton_fixe_1, bouton_fixe_2, etc.

Lorsque l’on clique dessus, des jetons (avec comportement déplaçable) sont créés dans la zone principale.
jeton_1 (qui a une valeur 1), jeton_2 (qui a une valeur 2), etc.

Voici le problème que je n’arrive pas à résoudre :

Lorsque les jetons créés sont déplacés dans une zone précise, leur valeur s’additionne.
Par exemple, dans mon schéma, un élève a déplacé des jetons dans une zone, ce qui donnera un total de 1+1+2+3=7

J’avais déjà fait une appli similaire mais plus simple pour les maternelles : https://laclassedulama.pagesperso-orange.fr/app_fleursnombres10/

La différence est que tous les objets étaient uniques et posés d’avance sur la scène.
J’ai donc utilisé la fonction de “collision” pour calculer la valeur d’une zone en fonction des objets en collision dessus.

Dans cette nouvelle appli, je suis bloqué car :slight_smile:

  • les objets sont créés à partir de clics ; il existe donc plusieurs “jeton_1”, “jeton_2”…
  • si j’utilise “collision”, ça ne fonctionne qu’une seule fois pour le jeton_1. Si il y a un autre jeton_1 (même nom), il ne s’ajoute pas.

Auriez-vous une solution ?
Merci d’avance pour votre aide.

(Si ce n’est pas clair, je peux rejoindre Discord pour échanger vocalement).


#2

Bonjour,

Une piste : ajouter les différents objets à compter dans un groupe d’objets, puis compter les objets si leur position X;Y est dans la zone souhaitée. Cela pourrait ressembler à ça :


#3

Merci, c’est une excellente piste ! J’ai pu faire avancer la situation.

Comme les jetons ont des valeurs différentes, j’ai mis le jeton 1 dans mon_groupe1, le jeton 2 dans mon_groupe2, etc.


Ca fonctionne : quand je place des jetons sur une zone spécifique (ici le pétale du haut), les objets sont bien comptabilisé et je peux calculer la valeur totale sur le pétale.

Il reste un problème : quand je retire tous les jetons placés sur le pétal, la valeur des variables reste à 1.

J’ai essayé de mettre une condition inverse (la ligne barrée) mais ça ne fonctionne pas : il suffit d’un jeton sur la zone et un en dehors pour que le total compté soit égal à 0.

Auriez-vous une astuce pour résoudre ce problème ?
Merci d’avance !


#4

Une astuce malheureusement non, il faudrait voir tous les événements et bien comprendre sur la base de quelles interactions ils doivent réagir. Le count() doit pouvoir retourner 0 si aucun objet n’est en collision.


#5

Le comptage d’objets ne fonctionnait pas en temps réel car quand on retirait un objet d’une zone, il était toujours comptabilisé.

J’ai fini par trouver une solution :
Evénement : lorsqu’on clique sur un bouton
Action 1 : les variables sont remises à zéro
Action 2 : comptage des objets en collision.

Un très grand merci pour la piste, ça m’a mis sur la bonne voie. :blush: