C# - méthode de prog : Cibler le collider d'un enfant

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Avatar de l’utilisateur
laurent357
Messages : 96
Inscription : 23 Juil 2012 16:35
Localisation : Belgique

C# - méthode de prog : Cibler le collider d'un enfant

Message par laurent357 » 09 Fév 2017 16:43

Bonjour à toutes et à tous,

Je cherche un moyen de cibler le collider de l'enfant d'un GameObject.

Donc pour travailler sur le collider du GameObject --> void OnColliderEnter ; void OnColliderExit ; void OnTriggerEnter, ...

et donc je cherche à faire un truc du style (mais je sais que c'est pas possible comme ça hein, pas taper merci :-D ) :

Code : Tout sélectionner

GameObject MonGo = this.transform.findChild("goEnfant").gameObject;
MoGo.GetComponent<Collider>().OnTriggerEnter(Collider _colider) ...
L’auto complétion du code permet de faire un truc du genre, mais je ne suis pas certain que ce soit une très bonne idée, d'autant plus que je ne vois pas du tout comment je pourrais travailler sur l'argument Collider... :aille:

En plus je ne trouve pas d'exemple, ni ici, ni sur le web, mais je ne fais peut-être pas la bonne recherche ... :oops:

Je vous remercie pour vos réponses.
Bonne fin de journée.

[Laurent]

[EDIT] Oui, j'ai oublié de vous dire qu'évidement, le but est d'éviter de mettre le code du collider sur l'enfant (surtout quand il n'y a 3x rien à y mettre), pour tout concentrer dans le parent [EDIT]
[Laurent]

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

Re: C# - méthode de prog : Cibler le collider d'un enfant

Message par boubouk50 » 09 Fév 2017 17:46

Euh, Pourquoi faire cela?
Tu veux savoir si le Collider de l'enfant a été touché pour renvoyer l'info au parent?
"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

Avatar de l’utilisateur
laurent357
Messages : 96
Inscription : 23 Juil 2012 16:35
Localisation : Belgique

Re: C# - méthode de prog : Cibler le collider d'un enfant

Message par laurent357 » 10 Fév 2017 10:15

Salut Boubouk 50,

Merci de t’intéresser à mon problème...

Je suis en train de faire une petite application test pour expliquer la manière de collaborer avec Unity à un nouveau collègue graphiste (je ne lui explique pas le script, la question c'est juste pour mon esprit tordu ... :twisted: )

Alors, en gros, j'ai un objet (une mine) qui doit suivre mon perso. Cette mine se met à suivre mon perso s'il entre dans une zone proche de la mine (la mine est englobée dans un grand SphereCollider). Si la mine s'approche trop de mon perso, elle explose (via un collider sur la mine)

Ma mise est agencée de la manière suivante :

Un EmptyGameObject contenant un GameObject représentant la mine en 3D

L'EmptyGameObject contient dans la pile de son inspecteur :
-> Le SphereCollider pour la détection de proximité entrainant le suivi du perso
-> le script gérant le comportement de la mine (appelons le MineManager)

Le GameObject de la mine 3D contient dans la pile de son inspecteur :
-> Le SphereCollider pour la détection du perso entrainant l'explosion.

Alors évidemment, pour l'explosion, on devrait mettre un OnTriggerEnter dans un script que l'on mettrait sur la mine 3D (enfant de l'EmptyGameObject) qui appellerait une méthode de MineManager qui détruirait la représentation de la mine et placerait un prefab d'explosion à la place.

(Si je ne suis pas clair, tu me le dis hein ... :roll: )

Mais moi et ma maladie mentale, on voudrais TOUT mettre dans le MineManager (donc dans le script parent).

Alors, j'ai déjà fait cela une fois avec un bouton. Plutôt que de donner des ordres à mon bouton dans l'interface d'Unity, j'ai fait ceci dans mon GameManager :

Code : Tout sélectionner

btn_validation = GameObject.Find("ValidationBtn").GetComponent<Button>(); // Le bouton de validation présent sur la scène
btn_validation.onClick.AddListener(delegate { Validate();}); // appel de la fonction de validation


Donc, voilà, je ne sais pas si cela est possible. Je ne sais même pas si c'est propre de faire cela ...

Merci pour ton aide.
[Laurent]

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

Re: C# - méthode de prog : Cibler le collider d'un enfant

Message par boubouk50 » 10 Fév 2017 10:28

Comme tu l'as dit, ce qu'il faudrait faire c'est que ce soit la mine qui se gère elle-même. C'est peu l'idée derrière la POO.
Là, il te faut récupérer un événement. Je pense que c'est possible, mais sans savoir le faire.
Essaie de chercher dans la doc Unity et sur le net avec les mots clés: Event, EventTrigger, EventListener, EventDelegate, ...

Ce genre de recherche (peut-être le premier lien à la solution):
http://answers.unity3d.com/questions/40 ... bject.html
http://answers.unity3d.com/questions/47 ... -coll.html
"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

Avatar de l’utilisateur
laurent357
Messages : 96
Inscription : 23 Juil 2012 16:35
Localisation : Belgique

Re: C# - méthode de prog : Cibler le collider d'un enfant

Message par laurent357 » 10 Fév 2017 14:35

Bon ben je ne trouve pas de solutions sans un minimum de code sur l'objet devant capter le OnTriggerEnter ...

J'ai parcouru tes liens + une dizaines d'autres, mais rien à faire ... apparemment je ne suis pas le seul à avoir essayé, mais j'ai lu pas mal de réponses disant que c'est impossible avec Unity ...

Merci tout de même Boubouk50.

[Laurent]
[Laurent]

Farstone
Messages : 187
Inscription : 04 Déc 2016 09:38

Re: C# - méthode de prog : Cibler le collider d'un enfant

Message par Farstone » 10 Fév 2017 15:08

J'ai du mal a comprendre ton problème, pourquoi ne pas coder sur le children quelques ligne ? est les récupérer sur le parent si tu tient vraiment a l’exécuter dessus.

EDIT : La raison pour la quel je te dit ça c'est que si tu veux faire le déclencheur dans le parent sans programmer dans le children tu va devoir faire une update de GetComponent qui n'est pas du tout optimisé, il prend beaucoup de ressources, et parfois il arrive que tu crée un script en programmation (du moins sous Unity) qui ne contiennent qu'une variable, c'est essentiel dans certains cas, alors oui c'est chiant et pas très esthétique mais je te conseil vraiment de le faire pour l'optimisation et aussi pour ne pas prendre de mauvaise habitude ;)
Dernière édition par Farstone le 10 Fév 2017 16:17, édité 2 fois.

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

Re: C# - méthode de prog : Cibler le collider d'un enfant

Message par boubouk50 » 10 Fév 2017 15:30

Oui, tu te poses une question à l'envers.
Vouloir entrer par la cheminée alors qu'il y a une porte ouverte, juste par curiosité, n'est pas toujours une bonne idée.
"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

Avatar de l’utilisateur
E3DStef
Administrateur
Administrateur
Messages : 1646
Inscription : 14 Juil 2013 18:30
Localisation : https://www.carte-des-membres.com/fr/Unity3D-France/

Re: C# - méthode de prog : Cibler le collider d'un enfant

Message par E3DStef » 12 Fév 2017 15:25

boubouk50 a écrit :Oui, tu te poses une question à l'envers.
Vouloir entrer par la cheminée alors qu'il y a une porte ouverte, juste par curiosité, n'est pas toujours une bonne idée.
Sauf si on est le 24 décembre et que tu ballades en pyjama rouge... :hehe:
ok ok je sors... :langue:
Le Savoir n'est Précieux que s'il est Partagé

Si besoin urgent de me contacter, faites moi un mail sur : franceunity3d@gmail.com

Avatar de l’utilisateur
laurent357
Messages : 96
Inscription : 23 Juil 2012 16:35
Localisation : Belgique

Re: C# - méthode de prog : Cibler le collider d'un enfant

Message par laurent357 » 13 Fév 2017 10:22

Merci à tous pour vos réponses, pistes, informations et suggestions :)

Donc le but était "d'économiser" un script en passant par le parent pour détecter le trigger d'un enfant.
C'est une chose que je faisais régulièrement (il y a longtemps longtemps longtemps longtemps , dans une galaxie lointaine lointaine lointaine lointaine ...) en Action Script (2 et 3).

Mais sur Unity c'est pas bon !

Bonne semaine à tous ! ;)
[Laurent]

Répondre

Revenir vers « (C#) CSharp »