Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Unity Discussion :

assembler des cubes


Sujet :

Unity

  1. #1
    Nouveau Candidat au Club
    assembler des cubes
    Salut à tous,

    Je suis confronté au problème suivant :

    Je crée 2 cubes posés sur un plan.

    J'affecte aux 2 cubes un code qui dit de déplacer un cube le long du plan lorsque l'on clique sur le cube.
    Je précise que les 2 cubes sont liés dans dans l'onglet hierarchy (il y'a un parent et un enfant cube).

    Lorsque je déplace le cube parent, cela marche les deux cubes se déplacent ensemble.
    Mais si je clique sur le deuxième cube (enfant), les cubes se séparent et le cube sur lequel on a cliqué se déplace tout seul.

    Ma question est la suivante : comment assembler (lier) deux ou trois cubes entre eux?

    Merci pour votre aide,

    a+

  2. #2
    Responsable 2D/3D/Jeux

    Bonjour,

    La solution que je verrai est de faire un script, à associer à tous les cubes qui doivent partager la même position et qui définirai la position la position suivant les autres. Maintenant, la problématique, c'est de savoir comment faire pour déterminer quel cube à raison... (et qui doit donc forcer sa position aux autres).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre éprouvé
    Salut,

    La solution de LittleWhite avec un script qui référence tous les cubes à bouger avec un plus le fait de retirer le lien parent/enfant devrait résoudre ton problème
    TontonNico

    On me dit souvent que je ressemble à Einstein... mais plutôt à Frank que Albert

  4. #4
    Membre éprouvé
    Alors?
    TontonNico

    On me dit souvent que je ressemble à Einstein... mais plutôt à Frank que Albert

  5. #5
    Membre confirmé
    Bonjour,
    Effectivement le problème semble difficilement soluble si les deux cubes ne sont pas au même niveau dans la hiérarchie, c’est-à-dire s'ils sont liés. Dans le cas contraire, le déplacement de l’un sera facilement répercuté sur l’autre par un script comme le dit LittleWhite.
    Le cube qui est sélectionné en dernier détermine évidemment la position de l’autre.
    Yves

  6. #6
    Membre éprouvé
    Comme souvent une question est posée mais on a des nouvelles 3 semaines plus tard, on verra bien si Julius réponds un jour
    TontonNico

    On me dit souvent que je ressemble à Einstein... mais plutôt à Frank que Albert

  7. #7
    Nouveau Candidat au Club
    Salut à tous,

    j'arrive bien a assembler 2 cubes entre eux.

    Je précise que les 2 cubes sont déplaçable avec la souris.

    En effet si on déplace le cube parent, les 2 cubes se déplacent bien ensemble.
    Mais si je déplace le cube enfant, le cube se sépare du cube parent.

    Merci pour vote aide,

    A+

  8. #8
    Expert éminent sénior
    salut Julius aaah les joies de la hiérarchie entre objets !!
    J'ai été confronté à ce problème il faut prendre la position de l'objet parent et calculer le delta vectoriel avec l'objet enfant.
    Si l'objet parent est déplacé , il faut replacer l'objet enfant selon le delta initial.

    Et c'est pas fini car arrive le problème de la rotation de l'objet parent..
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
    ( A Einstein)

  9. #9
    Expert confirmé
    Citation Envoyé par Mat.M Voir le message


    Et c'est pas fini car arrive le problème de la rotation de l'objet parent..
    Je connais pas Unity mais on ne peut pas déplacer le centre de rotation de l'objet enfant sur celui du parent?
    Play50HZ, le retro-gaming facile: Essayez-le

    Yildiz-Engine an open-source modular game engine: Website
    Yildiz-Online a 3D MMORTS in alpha: Facebook page / Youtube page

  10. #10
    Expert éminent sénior
    bonsoir je ne connais pas Unity totalement mais oui ça doit être possible de faire ça et de créer une hiérarchie d'objets
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
    ( A Einstein)

  11. #11
    Membre éprouvé
    tu mets tes 2 cubes sous un même parent et c'est celui ci que tu déplaces, c'est une solution
    TontonNico

    On me dit souvent que je ressemble à Einstein... mais plutôt à Frank que Albert

  12. #12
    Expert éminent sénior
    Citation Envoyé par Tonton Nico Voir le message
    tu mets tes 2 cubes sous un même parent et c'est celui ci que tu déplaces, c'est une solution
    vi ça c'est l'énoncé du problème mais encore faut-il trouver la logique pour créer une hiérarchie entre les objets...
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
    ( A Einstein)

  13. #13
    Membre confirmé
    Bonjour,
    Comme déjà dit il faut que les cubes soient au même niveau dans la hiérarchie.
    Par exp. on peut placer les cubes dans un tableau C#.
    Lorsque l’utilisateur sélectionne un cube et le déplace ce sont les variations de coordonnées de ce cube qui vont être utilisées pour déplacer les autres cubes avec les mêmes décalages sur chaque axe en parcourant le tableau…

  14. #14
    Membre éprouvé
    Citation Envoyé par Mat.M Voir le message
    vi ça c'est l'énoncé du problème mais encore faut-il trouver la logique pour créer une hiérarchie entre les objets...
    bin voila en 10 secondes la hiérarchie est faite sous unity:


    Après réfléchir au code exact c'est à lui que cela revient, faut pas déconner non plus
    TontonNico

    On me dit souvent que je ressemble à Einstein... mais plutôt à Frank que Albert

  15. #15
    Expert éminent sénior
    quotebin voila en 10 secondes la hiérarchie est faite sous unity:
    [[/QUOTE]je parlais de l'algorithme; créer la hiérarchie l'auteur de ce message est capable de le faire.
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
    ( A Einstein)

  16. #16
    Membre éprouvé
    Citation Envoyé par Mat.M Voir le message
    je parlais de l'algorithme; créer la hiérarchie l'auteur de ce message est capable de le faire.
    Négatif chef:

    Citation Envoyé par Mat.M Voir le message
    vi ça c'est l'énoncé du problème mais encore faut-il trouver la logique pour créer une hiérarchie entre les objets...
    Bon

    *se sors un doigt du c** car oui je suis un glandeur*

    Timer (XX minutes . XX secondes):
    00.00 je commence par lancer unity et je vais voir sur developpez le topic pour déplacer un cube
    01.00 topic trouvé car il est encore dans le top 10 des sujets unity, je regarde un peu la conversation et je copie le code (merci @ PixelJuice au passage donc)
    01.30 j'ai pris mon projet 3D random pour faire mes tests, j'ai fais un nouveau script C# et je copie le code dedans
    05.00 j'essaye de comprendre le code et je le test en créant un cube de base.
    J'avoue que moi non plus j'aurais jamais trouvé ce code moi même je pense ou avec pas mal de recherche, c'est de la magie mais cela fonctionne!
    Même si j'ai un niveau en prog beaucoup plus bas que beaucoup sur ce site (vous êtes dans les étoiles pour moi quand je vois les discussions techniques), je suis pas totalement à la ramasse et j'arrive facilement à identifier ce qui fait bouger le cube (faut pas être un devin non plus vous me direz hein)
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    movingObject.transform.position = ray.GetPoint(rayDistance) + positionZero;


    05.10 j'ai créé mon empty parent et mis 2 cubes dedans
    05.40 je réfléchie à comment mettre en place ma solution dont je parlais (les cubes dans un GO et on fera bouger le GO ce qui fera bouger automatiquement tous les cubes dedans)
    05.45 c'est parti pour tester: je modifie le script et comme je suis une feignasse je fait une var en public pour la glisser dans l'inspector
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    public GameObject Toto;

    05.53 je mets la ligne de code qui fait bouger en commentaire et je rajoute mon test
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     //movingObject.transform.position = ray.GetPoint(rayDistance) + positionZero;
    Toto.transform.position = ray.GetPoint(rayDistance) + positionZero;

    06.03 je glisse mon parent dans toto, je test et cela semble bien réagir, mes 2 cubes bougent en même temps
    06.13 j'attache le script au deuxième cube, je test et idem cela semble bien réagir sauf une "téléportation" des cubes des fois quand je les sélectionne
    06.45 en réfléchissant c'est surement le décalage d'origine entre mes cubes et le parent qui font cette "téléportation" car bon PixelJuice n'a pas fait son code d'origine pour cette application , il faudrait garder en mémoire/calculer l'offset pour l'inclure dans le calcul de déplacement
    07.05 après un essai complètement foiré je trouve ou rajouter un petit log pour la vidéo que je vais faire pour bien voir quand je sélectionne un cube ou l'autre à cet endroit du code:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    movingObject = hit.transform.gameObject;
    Debug.Log("GO selectionné: " + hit.transform.gameObject.name);

    07.25 tout à l'air de bien tourner, bon bin je me prépare psychologiquement
    07.30 *commence à se sortir un deuxième doigt du c** pour régler le souci d'offset... oué mais nan faut pas abuser*

    petite vidéo du résultat, au final j'ai tester d'autre truc et surement un peu sous estimer mes temps, on va partir sur x2 soit 15min au total:


    J'ai passé quand même plus de temps à faire ce message et régler bandicam que j'utilise 2 fois par ans que de chercher et tester sur unity
    Après comme toujours faut voir ce que julius1983 a vraiment en tête et il y a 90% de chance qu'il reformule 10 fois sa demande mais voila quoi, avec le code magique de PixelJuice et un peu de connaissance d'unity c'est pas la fin du monde je pense mais tout comme moi faut se sortir un peu les doigts sinon il avancera jamais en attendant qu'on lui fasse tout

    A bon entendeur
    TontonNico

    On me dit souvent que je ressemble à Einstein... mais plutôt à Frank que Albert

  17. #17
    Membre chevronné
    Citation Envoyé par Tonton Nico Voir le message

    01.00 topic trouvé car il est encore dans le top 10 des sujets unity, je regarde un peu la conversation et je copie le code (merci @ PixelJuice au passage donc)
    De rien

    Il y a plusieurs façons de procéder mais la tienne à l'air pas mal. Bon après il faudrait + d'infos de l'OP pour savoir ce qu'il veut faire au final mais ta réponse m'aura fait marrer en tout cas.

    J'étais surtout dans l'idée de founir un code out of the box, parce que je sens que julius galère un peu.

    Un peu hors-sujet mais si jamais t'as besoin (ou n'importe qui passant sur ce topic) de faire des screen captures à la va-vite comme tu l'as fait, tu peux utiliser ShareX, tu peux filmer (entre autre) une zone uniquement ou tout l'écran, ça l'upload automatiquement, en mp4, gif , etc ...

    Bref c'est génial.
    Keep calm and debug it

  18. #18
    Expert éminent sénior
    Citation Envoyé par Tonton Nico Voir le message
    Négatif chef:
    A bon entendeur
    dans toutes ces explications on ne sait pas du tout si ça fonctionne ou pas.
    Les lignes de codes tapées précédemment sont-elles fonctionnelles ?
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
    ( A Einstein)

  19. #19
    Membre éprouvé
    Citation Envoyé par Mat.M Voir le message
    dans toutes ces explications on ne sait pas du tout si ça fonctionne ou pas.
    Les lignes de codes tapées précédemment sont-elles fonctionnelles ?
    Cela fonctionne pour ce que je voulais faire (on dirait que tu ne vois pas la vidéo finale, voici le lien www.youtube.com/watch?v=XzF8ui5NTdI&...ature=emb_logo), faut voir ce que julius a en tête par contre
    TontonNico

    On me dit souvent que je ressemble à Einstein... mais plutôt à Frank que Albert

  20. #20
    Nouveau Candidat au Club
    Salut à tous,

    j'ai crée 2 cubes sur un plan et j'essaye de les déplacer tout les deux ensemble sur le plan.

    Pour cela je crée un troisième cube que je parente aux 2 cubes (dans l'onglet Hierarchy) .


    Et quand je déplace après compilation le troisième cube les 2 cubes enfants se déplacent bien ensemble.
    Mais si je ne passe pas le troisième cube, les cubes se séparent.

    Peut-être avec un empty à la place du troisième cube.
    J'ai également pensé à utiliser les Joint, mais je patauge un peu.
    J'éssayé le code suivant :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	{
    		cube2.transform.parent = cube1.transform;
    		cube1.transform.parent = cube2.transform;
    	}


    Mais le code ne fonctionne pas.

    Dans l'attente d'une aide précieuse.

    A+

###raw>template_hook.ano_emploi###