Créer un Objet et l'attacher à un groupe


#1

Bonjour à tous

Je n’arrive pas à lier des objets à des groupes.
En gros, je crée dynamiquement 36 objets, dans un tableau de 6x6 cases.

Je voudrai attacher chacun des objets à :

  • un groupe ligneX (pour tous les objets de la ligne X)
  • un groupe colonneY (pour tous les objets de la colonne Y)
    X et Y vont de 0 à 5 (pour les 6 colonnes et 6 rangées).

Je ne trouve aucune action pour Créer un Objet puis le mettre dans un Groupe

En gros, je cherche à faire un jeu type diamonds (est-ce bien le bon nom) où on aligne 3+ objets identiques, et ils disparaissent.
Donc si vous avez un exemple de ce type de jeu, je suis également preneur.

Merci d’avance pour votre aide.


#2

Pourquoi les mettre dans un groupe?


#3

Je pense qu’il souhaite bouger toutes les instances d’une ligne/rangé d’un coup en les liant dans un groupe.
Moi ce que je vois d’intéressant serait une possibilité de créer un groupe d’instances qui soit invocable dans les événements.

Actuellement on a les groupes d’objets pour mettre plusieurs objets, mais ça prend toutes les instances des objets qui sont dans ce type de groupe.

La feuille d’événement elle fonctionne pour chaque instances de l’objet sur la scène.
Donc la possibilité de sélectionné des instances et de les stocké/invoqué me semble un besoin.

L’ajout d’une action pour stocké des instances et d’une condition pour les invoqué.
La condition se serait un peut plus poussée que “Pick all objects” ça se présenterais comme ça :

Pick the instances in selection XXX

Et l’action:

Save the instances in selection XXX

En cas pratique : avec un objet “voiture” sur la scène qui est présent deux fois sur la scène, l’un avec une variable ID = 0 et l’autre 1 ça donnerais si on souhaite avoir que la voiture avec l’ID 0 :

              Condition                   |                  Action
|_   At the beginning of scene            |
 |_  Object voiture has variable ID = 0   |    Save the instances in selection XXX

              Condition                  |                  Action
|_  Pick the instances in selection XXX  |  Do =100 to the position y of selection(XXX)

Mais pour ça il faudrait que les champs qui sélectionnent des objets soit édité, et surement d’autres choses dans le moteur.

Après peut être qu’il y a une logique plus simple déjà réalisable dans GD, surement même mais je la vois pas.


#4

Merci à vous 2.

Oui, tout à fait, je veux bouger toute la ligne, ou toute la rangée en même temps.

@Bouh : je comprends à peu près ce que vous proposez, mais plusieurs notions ne me parlent pas vraiment :

Feuille d’événement
save the instances
pick the instances
in selection

Je n’ai pas vu ces choses là dans gdevelop.


#5

Je spécule sur ce qu’il faudrait ajouté au logiciel pour créer des groupes comme vous souhaitez.
seul la feuille d’événement existe. c’est là ou sont les evenements de votre jeux.


#6

En gros ce qu’il faut rajouter c’est les arrays


#7

Vous voulez dire, qu’actuellement, on ne peut pas faire ça ?

Ok, imaginons une autre façon de faire.
Pour chacun de mes 36 objets, je leur ai mis un nom dans une variable d’objet.

Quand je clique sur un objet, je veux pouvoir déplacer les 6 objets, soit de la colonne, soit de la rangée, en fonction de la direction de ma souris.

Si c’est la rangée qui bouge, il faut que les objets bougent juste horizontalement (valeur X).
Si c’est la colonne qui bouge, il faut que les objets bougent verticalement (valeur Y).

En gros, si ma souris bouge de +150 en X, mes 6 objets doivent bouger de 150 en X également.

Exemple pour un déplacement horizontal (c’est pareil pour vertical)
1- je détermine le déplacement DX de ma souris depuis que j’ai cliqué sur l’objet
2- avec une boucle foreach Objet, j’ajoute DX à la position X de tous mes objets de la ligne

Je vais essayer comme ça.
Si vous avez une meilleure idée, je prends !


#8

Ok, j’ai appliqué la méthode décrite ci dessus.
Les bonhommes se déplacent bien horizontalement ou verticalement.

Mais je n’arrive pas à faire un déplacement qui suit exactement la souris.
Avec l’exemple en image, ça clignote horriblement, ça saute…

J’ai essayé d’autres méthodes de déplacements, mais ça applique une force permanente (dommage, ça ne clignotait pas, et ne sautait pas).

iY est la coordonnée Y de mon bonhommes
iX est la coordonnée X de mon bonhommes
La condition marche bien, je n’ai bien que la colonne ou rangée voulue qui bouge.
C’est vraiment la manière de se déplacer qui cloche !

Du coup, je sens que j’approche de la résolution de cette étape.


#9

Il y a une action pour lié des objets et l’action pour récupéré les objets lié a un autres.
C’est une piste qui me semble la plus simple.
Attention à lié les objets aux autres au bon moment car sinon tu risque de lié toutes les instances de ton objet.
Il faut vérifié si les objets son sur la même coordonnée X ou Y et ensuite les lié.


#10

Bon, je n’arrive à rien…

1- lorsque mes objets sont liés, les déplacements clignotent dans tous les sens et ne sont pas précis.

2- lorsque je boucle sur les objets, j’arrive à bien bouger toute une ligne ou une colonne, mais il n’y en a plus qu’un seul qui apparait. J’ajoute pourtant bien l’équivalent de mon déplacement à objet.X() (mais on dirait qu’ils prennent tous le même résultat, et je vois pas pourquoi)
3- le seul truc qui semblait marcher bien… c’est quand j’appliquais une force X (où X est le déplacement de ma souris) à la colonne ou rangée. Mais pas adapté, car ce n’est qu’une force, et pas un placement absolu.


#11

Pfiou… je n’arrive même plus à faire bouger mes objets liés !!!
SVP sauvez les quelques cheveux qui me restent :joy:

Voilà mon code :

tX et tY, c’est le point cliqué sur la scène par la souris.
Je l’utilise, pour calculer le déplacement, et c’est OK

J’ai un objet sur la scène (nommé invisible - car il sera invisible - mais bien visible pour les tests)

J’ai une variable direction (1 ou 2, selon horizontal ou vertical - c’est OK)

Dans mon debugTxt, je vois bien ce que j’attends.

Dans la 1ère boucle foreach objet Bonshommes, je lie ceux qui sont sur la colonne ou la rangée à l’objet Invisible.

Dans la 2ème boucle foreach objet Bonsommes, je déplace l’objet invisible (et il se déplace bien), et les bonshommes liés devraient suivre… mais ils restent totalement immobiles !

Dans les lignes désactivées, j’ai fait le test en bougeant directement les bonshommes, et ça bouge bien la colonne ou la rangée… mais de façon très bizarre. (mais au moins, ça confirme que la condition iY = instanceY est correcte)

Merci d’avance pour votre aide !


#12

Y’a rien qui stipule que bonshommes doit bouger aussi, faut faire un truc dans ce genre là je crois :

For Each bonshommes
Prendre en compte les objets liés à invisible : Position de bonshommes x: invisible.X() y: invisible.Y()


#13

Merci Slamante pour ton aide.

J’ai du mal à comprendre le truc.
Car mes objets liés ne sont pas tous à la même position.

Et si je dois mettre la position de chaque objet, quel est l’intérêt de les lier ?

J’avoue être complètement largué, car je pense que je n’ai pas bien compris le fonctionnement.


#14

L’action lié un objet seule ne sert à rien, il faut aussi utiliser la condition “Prendre en compte les objets liés” pour que le programme interprète que tu veuilles faire une action pour prendre en compte seulement les deux objets liés entre eux, du coup ça va prendre en compte seulement les objets liés entre eux et non pas tous les objets “bonshommes”, donc si tu bougera invisible et que la condition “Prendre en compte les objets liés” est active, seul l’objet lié bonhommes bougera et non pas tous les objets bonhommes.

lol je sais pas si je suis clair désolé.


#15

non, pas clair :stuck_out_tongue_winking_eye:

J’ai 6 objets bonshommes liés à invisible.
Donc en toute logique d’après ce que tu dis (et ce que j’ai compris), lorsque je bouge invisible, les objets liés devraient suivre… et ça n’est pas le cas actuellement.

Y a-t-il un moyen de vérifier les objets liés ?
En debug, je ne vois rien.


#16

Lié un objet ça ne fait rien, c’est la condition ensuite qui est utile, il faut faire ce que j’ai dis dans mon premier message si tu veux déplacer bonhommes avec invisible


#17

définitivement, je n’y arrive pas.
Je vous mets ce que j’ai fait pour l’instant.
Le déplacement est dans l’événement externe Coulissement.

(euh… comment met-on une pièce jointe ??)
le zip ici : https://funnykdo.com/zTest3/version1.zip


#18

L’action “Lié un objet” est uniquement un moyen se prendre en compte un objet qui est “lié” à un autre.
Le meilleur exemple est celui-ci.
https://editor.gdevelop-app.com/?project=example://bouncing-ball-and-rope


#19

merci bouh.
Mais ça ne m’aide pas, cet exemple est trop compliqué pour moi…
Je suis perdu dans le peu d’instructions

J’essaie de décortiquer.