Naviguer dans la hiérarchie d'objets

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Skyxo234
Messages : 9
Inscription : 02 Juil 2017 09:19

Naviguer dans la hiérarchie d'objets

Message par Skyxo234 » 29 Août 2017 16:39

Bonjour/Bonsoir,
Désolé pour ce titre, je ne sais pas comment l'expliquer.
Alors voilà, je suis partit sur un système de HeadShot.
Je vous met des screens du mon zombie :
Image
Comme vous le voyez, le corps et la tête sont séparés par 2 colliders différents. Dans ma liste, il y a le Zombie, et quand on descend, il y a mesh_Head qui est un parent de Zombie. Ce que je voudrais, c'est récupérer le GameObject Zombie deuis mesh_Head, je sais pas si j’explique bien ^^' : Zombie, qui contient le script avec la vie du zombie. Et mesh_Head qui contient le script des dégâts quand on touche la tête. Pour que les dégâts soient pris en compte, il faut envoyer l'information au script qui contient la vie (ZombieHealth pour ma part) à Zombie. Voilà, j’espère que j'ai été clair ^^.
Merci de votre aide.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6268
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Naviguer dans la hiérarchie d'objets

Message par boubouk50 » 29 Août 2017 16:51

Tu peux facilement accéder aux parents et enfants depuis les transform.
Tu as Transform.parent pour le 1er parent et donc Transform.parent.parent pour le grand-père, etc. jusqu’à root, le parent le plus haut dans la hiérarchie.
Pour les enfants, c'est plus compliqué, puisqu'on a forcément qu'un parent mais on peut avoir plusieurs enfants.
Un exemple est donné au début de la documentation pour récupérer les transform de chaque enfant (ensuite à toi de faire la bonne condition pour trouver le bon). Tu as aussi GetChild () si tu possèdes l'index sinon tu as toujours les recherches par Component.
Enfin, bon, tout est dans la documentation, je vais pas te faire un résumé.

(Personnellement, je mettrais le Collider sur le squelette et pas le Mesh pour qu'il suive les mouvements de tête...)

Bonne chasse.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Skyxo234
Messages : 9
Inscription : 02 Juil 2017 09:19

Re: Naviguer dans la hiérarchie d'objets

Message par Skyxo234 » 29 Août 2017 17:12

Sur son squelette ?

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6268
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Naviguer dans la hiérarchie d'objets

Message par boubouk50 » 29 Août 2017 17:20

Ton zombie est composées de 2 parties: le maillage (Mesh) (divisé en plusieurs sous-mesh) qui représente les points à afficher et le Squelette (Rig ou Bip)(divisé en bones) qui permet l'animation.
Tes meshs sont modifiés par les os (bones) du squelette, mais visuellement seulement, car ce sont les sommets qui subissent la transformation. Le pivot lui n'est pas affecté, donc un Collider sur un Mesh ne suivra jamais le maillage lors d'une animation, il restera en place.
Autrement dit le Collider ne suivra pas la tête lors d'une animation.

Ceci n'est valable que si l'animation est un Skin . Si les parties de ton zombie sont attachées aux bones, alors c'est bon. Mais j'en doute dans ton cas, les parties ne doivent servir qu'à pouvoir diviser ton zombie en plusieurs morceaux.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Skyxo234
Messages : 9
Inscription : 02 Juil 2017 09:19

Re: Naviguer dans la hiérarchie d'objets

Message par Skyxo234 » 29 Août 2017 17:38

Merci, je comprends mieux maintenant ^^

Skyxo234
Messages : 9
Inscription : 02 Juil 2017 09:19

Re: Naviguer dans la hiérarchie d'objets

Message par Skyxo234 » 29 Août 2017 18:17

boubouk50 a écrit :
29 Août 2017 16:51
Tu peux facilement accéder aux parents et enfants depuis les transform.
Tu as Transform.parent pour le 1er parent et donc Transform.parent.parent pour le grand-père, etc. jusqu’à root, le parent le plus haut dans la hiérarchie.
Pour les enfants, c'est plus compliqué, puisqu'on a forcément qu'un parent mais on peut avoir plusieurs enfants.
Un exemple est donné au début de la documentation pour récupérer les transform de chaque enfant (ensuite à toi de faire la bonne condition pour trouver le bon). Tu as aussi GetChild () si tu possèdes l'index sinon tu as toujours les recherches par Component.
Enfin, bon, tout est dans la documentation, je vais pas te faire un résumé.

(Personnellement, je mettrais le Collider sur le squelette et pas le Mesh pour qu'il suive les mouvements de tête...)

Bonne chasse.
Je peux avoir un exemple s'il vous plaît ? Et par la suite, le lien de la documentation ^^

Avatar de l’utilisateur
Greg
Messages : 156
Inscription : 08 Mai 2017 15:22

Re: Naviguer dans la hiérarchie d'objets

Message par Greg » 29 Août 2017 21:03

Hiérarchie :
Bonhomme
>Tete
>Main
>>Doigt1
>>Doigt2
>>Doigt3

Code : Tout sélectionner

    void ObjectSelector()
    {
        GameObject bonhomme = GameObject.Find("Bonhomme");
        GameObject doigt1 = GameObject.Find("doigt1");
        GameObject main = GameObject.Find("main");

        Transform parentTransform = doigt1.transform.parent; // va trouver le transform de main
        GameObject parent = doigt1.transform.parent.gameObject; // va trouver le gameobject de main

        Transform grandpaTransform = doigt1.transform.parent.parent; // va trouver le transform de bonhomme
        GameObject grandpa = doigt1.transform.parent.parent.gameObject; // va trouver le gameobject de bonhomme

        Transform enfantTransform = main.transform.GetChild(0); // va trouver le transform de doigt1
        GameObject enfant = main.transform.GetChild(0).gameObject; // va trouver le gameobject de doigt1

        Transform petitEnfantTransform = bonhomme.transform.GetChild(0).GetChild(2); // va trouver le transform de doigt3
        GameObject petitEnfant = bonhomme.transform.GetChild(0).GetChild(2).gameObject; // va trouver le gameobject de doigt3
    }
Transform.parent
Transform.GetChild

GameObject.Find
FindObjectOfType
FindGameObjectsWithTag

:merci:
Mon jeu de développement cellulaire : MICROBIOME (encore quelques bugs...)
(merci bien à ceux qui passent mettre des étoiles ! ^^)

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6268
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Naviguer dans la hiérarchie d'objets

Message par boubouk50 » 30 Août 2017 09:19

Skyxo234 a écrit :
29 Août 2017 18:17
Je peux avoir un exemple s'il vous plaît ? Et par la suite, le lien de la documentation ^^
Le lien, je te l'ai donné, l'exemple il est dans la doc comme je te l'ai écrit. Merci de lire et ne pas juste survoler.
boubouk50 a écrit :
29 Août 2017 16:51
Tu peux facilement accéder aux parents et enfants depuis les transform.
...
Un exemple est donné au début de la documentation pour récupérer les transform de chaque enfant.
Enfin, bon, tout est dans la documentation, je vais pas te faire un résumé.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Répondre

Revenir vers « Unity le logiciel »