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 :
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.
Naviguer dans la hiérarchie d'objets
- boubouk50
- ModoGenereux
- Messages : 6268
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: Naviguer dans la hiérarchie d'objets
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.
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
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: Naviguer dans la hiérarchie d'objets
Sur son squelette ?
- boubouk50
- ModoGenereux
- Messages : 6268
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: Naviguer dans la hiérarchie d'objets
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.
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
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: Naviguer dans la hiérarchie d'objets
Merci, je comprends mieux maintenant ^^
Re: Naviguer dans la hiérarchie d'objets
Je peux avoir un exemple s'il vous plaît ? Et par la suite, le lien de la documentation ^^boubouk50 a écrit : ↑29 Août 2017 16:51Tu 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.
Re: Naviguer dans la hiérarchie d'objets
Hiérarchie :
Bonhomme
>Tete
>Main
>>Doigt1
>>Doigt2
>>Doigt3
Transform.parent
Transform.GetChild
GameObject.Find
FindObjectOfType
FindGameObjectsWithTag
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.GetChild
GameObject.Find
FindObjectOfType
FindGameObjectsWithTag
Mon jeu de développement cellulaire : MICROBIOME (encore quelques bugs...)
(merci bien à ceux qui passent mettre des étoiles ! ^^)
(merci bien à ceux qui passent mettre des étoiles ! ^^)
- boubouk50
- ModoGenereux
- Messages : 6268
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: Naviguer dans la hiérarchie d'objets
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.
"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
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation