IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 :

Récupérer la cible de chaque objet


Sujet :

Unity

  1. #1
    Membre à l'essai
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Février 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Février 2019
    Messages : 26
    Points : 18
    Points
    18
    Par défaut Récupérer la cible de chaque objet
    Bonsoir,

    je cherche a récupérer dans un tableau la cible de chaque objet :

    j'ai fait 2 tableaux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public GameObject[] mesObjets; 
    public GameObject[] mesCibles;
     
    void Update()
    {
    mesObjets = GameObject.FindGameObjectsWithTag ("Objet");
    mesCibles = ????? // l'objet porte un script Detection qui stocke une variable public GameObject cible. C'est ça que je veux récupérer dans mon tableau
    // j'ai essayé plusieurs méthodes avec le chemin GetComponents<Detection>().cible;
     
    }
    Bref, si vous pouvez m'éclairer SVP...je tourne en rond.

  2. #2
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 639
    Points : 2 148
    Points
    2 148
    Par défaut
    Bonsoir,

    Et bien c'est facile, une fois que tu as tous tes objets, tu itères dans ton tableau mesObjets et tu récupères la cible pour chaque objet, quelque chose dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            List<GameObject> cibles = new List<GameObject>();
     
            for (int i = 0; i < mesObjets.Length; i++)
            {
                var cible = mesObjets[i].GetComponent<Detection>().cible;
     
                cibles.Add(cible);
            }
     
            mesCibles = cibles.ToArray();
    Cependant, je ne comprends pas trop ton intention, qu'est ce que tu essayes de faire avec ce script précisément ? Car je pense qu'il existe un bien meilleur moyen de faire.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Février 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Février 2019
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Merci pour ta rapidité

    Tu as certainement raison. j'ai des joueurs sur une piste, je balance des objets genre projectile tête chercheuse. j'me casse le crane la dessus. Mais ça m'amuse.
    Chaque projectile va avertir le joueur qu'il est ciblé et va aussi le prévenir qu'il a loupé, et là, c'est le B.....
    Car, après avoir lâché ce joueur, il peut en détecter un autre, etc...
    j'ai choisi cette solution pour dissocier chaque projectile et sa cible.
    Le pire c'est plusieurs projectiles sur la même cible

  4. #4
    Membre à l'essai
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Février 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Février 2019
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    re,

    J'ai essayé ta méthode, il affiche chaque frame en détail. C'est à dire que dans mon exemple, avec juste 2 projectiles référencés dans mon tableau mesObjets, il affiche déjà plus de 500 éléments en quelques secondes dans le tableau mesCibles

    Je veux juste qu'il m'affiche mes 2 cibles de mes 2 projectiles en temps réel (si mon projectile change de cible, il met à jour la case Elément de L'inspector.

    J'ai du rater quelque chose!

  5. #5
    Membre expérimenté Avatar de Tonton Nico
    Homme Profil pro
    Ingénieur
    Inscrit en
    Septembre 2017
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 398
    Points : 1 320
    Points
    1 320
    Par défaut
    bin ne le mets pas dans un void update mais dans une fonction et tu n'auras pas 500 fois le message de spammer mais seulement quand tu en as besoin
    TontonNico

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

  6. #6
    Membre à l'essai
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Février 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Février 2019
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    En effet, c'est une solution que j'avais songé.
    Je ne comprends toujours pas pourquoi, je ne peux pas afficher, les 2 tableaux de la même manière.

  7. #7
    Membre expérimenté Avatar de Tonton Nico
    Homme Profil pro
    Ingénieur
    Inscrit en
    Septembre 2017
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 398
    Points : 1 320
    Points
    1 320
    Par défaut
    tu ne peux pas les afficher ? c'est à dire?

    A tout hasard, pourquoi tu ne préviens pas le joueur en question lorsque tu détermines ton .cible? tu envoies les messages/affiche l'info à ce moment la c'est pas plus simple?
    TontonNico

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

  8. #8
    Membre à l'essai
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Février 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Février 2019
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Je voudrais voir afficher dans mon inspector mon tableau mescibles pareille que mesObjets :

    là j'ai mon tableau mesObjets avec mes 2 projectiles (il est aussi dans l'update, mais il affiche que 2 éléments, puisqu' il y a que 2 projectiles dans la scène).
    Après j'ai mesCibles mais il me montre a chaque frame ce qu'il fait dans une nouvelle case élément a chaque fois.
    Si je mets juste une var public GameObjets cibleProjectile; il va m'afficher cette variable dans l'inspector et la cible changera dans la case élément, même s'il y a 10 détections de cibles.

    Je ne sais pas quel est la meilleur façon de faire pour savoir quel projectile a cette cible. Voila pourquoi je suis parti sur ces 2 tableaux. Normalement mesObjets[0] est mon 1er projectile et mesCibles[0] c'est la cible de mon 1er projectile. C'est bien ça ?

  9. #9
    Membre expérimenté Avatar de Tonton Nico
    Homme Profil pro
    Ingénieur
    Inscrit en
    Septembre 2017
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 398
    Points : 1 320
    Points
    1 320
    Par défaut
    Citation Envoyé par Jeje66 Voir le message
    Je ne sais pas quel est la meilleur façon de faire pour savoir quel projectile a cette cible. Voila pourquoi je suis parti sur ces 2 tableaux. Normalement mesObjets[0] est mon 1er projectile et mesCibles[0] c'est la cible de mon 1er projectile. C'est bien ça ?
    Normalement oui ton premier élément de mesCibles étant l'itération de ton premier élément de mesObjects, il y a concordance entre tes 2 tableaux

    Je ne sais pas s'il y a "une meilleur façon" de faire pour un système complexe comme tu veux mettre en place vu qu'on n'est pas dans ta tête avec tous les détails ^^, si tu as un truc qui fonctionne bien cela sera déjà une bonne chose, tu verras pour optimiser après le cas échéant je dirais personnellement
    TontonNico

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

  10. #10
    Membre à l'essai
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Février 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Février 2019
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Ou je galère, c'est que chaque projectile à le même script. Si 2 projectiles sont sur la même cible, ils se contredisent, l'un sort de la zone donc désactive le popup et l'autre est toujours dans la zone donc devrait réactiver ce popup. (en fait c'est plutôt si l'un sort et que l'autre est toujours dans la zone, le popup devrait rester).
    Je réfléchis à prendre le problème a l'envers.
    plutôt chaque joueur qui stocke tout les projectiles ,leurs distances et leurs popups.
    les colliders ça ne vas pas.
    A force de me gratter la tête, je vais plus avoir de cheveux

  11. #11
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 639
    Points : 2 148
    Points
    2 148
    Par défaut
    Bonsoir,

    Si c'est une histoire de debug (si j'ai bien compris ce que tu veux faire)., quand tu dis que tu veux savoir quel joueur est ciblé par tel projectile, tu l'affiches dans le jeu directement, sous la forme d'un Canvas ou de pleins de manières différentes.

    Là tu es entrain de raisonner à l'envers. Tu adaptes la structure de ton code à la manière dont tu veux le debugger

    Dans ce cas là, même si tu veux garder ta structure des 2 tableaux, créer un DebugManager qui lui va s'en occuper de son côté, mais qui n'intervient en rien dans la gestion de tout ça.

    Pour le reste, tu peux faire comme ceci :

    • Dès qu'un projectile détecte une cible, il l'a notifie => Donc affichage pop-up, tu peux même afficher un compter pour indiquer au joueur qu'il y en a 2 voir +.
    • Dès qu'un projectile ne détecte plus une cible, il notifie l'ancienne => Donc désactivation de la pop-up, décrémentation du compteur, etc ...


    Il est très important que chaque classe s'occupe juste de ses affaires (principe de Single Responsability).

    Citation Envoyé par Jeje66 Voir le message
    A force de me gratter la tête, je vais plus avoir de cheveux
    Ne t'inquiètes pas, c'est plus simple que tu ne le penses. Il faut juste que tu trouves le bon angle !

  12. #12
    Membre à l'essai
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Février 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Février 2019
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Bonjour,

    merci pour tes conseils.

    Je ne maîtrise pas très bien encore la gestion des tableaux, tu as pu le voir
    qui correspond au [0, 1 ,2, etc..], je le fait par s'il s'appelle "machin" alors...

    c'est pas évident de trouver la bonne organisation des scripts et de ce qu'ils vont faire.
    A mon avis, il faut déjà bien maîtriser le langage. Pour l'instant je me fait des croquis, qui fait quoi et qui le gère de manière général.

    J'ai continué d'avancer sur ces popups et leurs détections.
    je suis parti sur un mix entre sphère collider (le mec qui se contredit pas ) et distance projectile -> cible.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [OL-2010] Récupérer les destinataires, expéditeur, CC, objet, de chaque mail
    Par Hyppopo dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 25/01/2019, 11h41
  2. Récupérer les maximums pour chaque ensemble ?
    Par vynce dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/12/2005, 09h52
  3. [AS2] Récupérer une valeur d'un objet lorqu'on clique dessus
    Par softyClochette dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 13/10/2005, 18h40
  4. [Sources]Récupérer le chemin d'un objet OLE
    Par Mr.Gus dans le forum Contribuez
    Réponses: 9
    Dernier message: 12/05/2005, 10h11
  5. [Ada] Récupérer un pointeur sur un objet existant
    Par vincnet500 dans le forum Ada
    Réponses: 1
    Dernier message: 14/11/2004, 14h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo