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 :

Dépassement d'un Objet par rapport à un autre (Position)


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 Dépassement d'un Objet par rapport à un autre (Position)
    Bonjour à tous,

    Je suis débutant sur Unity, je cherche a détecter le dépassement de 100 en Z d'un Cube B, par rapport à un Cube A.
    Ils se déplacent vers l'avant tout les 2, le CubeB va un peu plus vite que le CubeA.
    Au départ le CubeB est derrière le CubeA et finit par le dépasser.

    J'ai trouvé comment dire qu'il sont à égalité :

    if (CubeB.transform.position.z == CubeA.transform.position.z)
    { Je lance une Action}

    Pouvez-vous m'éclairer SVP ?
    Merci de votre Aide.

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 379
    Points
    20 379
    Par défaut
    salut il suffit simplement de calculer la distance entre ces deux points et si elle est supérieure à 100 alors tu déclenches l'action que tu veux.
    Pour calculer la distance entre deux points soit il y a une méthode dans Unity soit avec Pythagore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    float delta_x;	
    float delta_y;
    float distance;
    int int_distance;
    delta_x=(float)abs(pt1.xPt-pt2.xPt );   
    delta_y=(float)abs(pt1.yPt-pt2.yPt );   
    delta_x=delta_x*delta_x;
    delta_y=delta_y*delta_y;
    distance=sqrt(delta_x+delta_y);

  3. #3
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    il y a une méthode dans Unity
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    float delta_x;	
    float delta_y;
    float distance;
    int int_distance;
    delta_x=(float)abs(pt1.xPt-pt2.xPt );   
    delta_y=(float)abs(pt1.yPt-pt2.yPt );   
    delta_x=delta_x*delta_x;
    delta_y=delta_y*delta_y;
    distance=sqrt(delta_x+delta_y);
    Vu le code , ça marcherai aussi en C ou C++
    Par contre je suis étonné qu'il n'y a pas de fonction prefaite pour ça sur Unity :p

  4. #4
    Expert confirmé Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 444
    Points : 4 563
    Points
    4 563
    Par défaut
    le sqrt étant assez couteux sur nos processeurs (sauf avec le fast inverse mais bon...), il est plus économe de s'en passer et de comparer avec le carré de la distance voulue.
    PXL 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

  5. #5
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 379
    Points
    20 379
    Par défaut
    @Kannagi tu as raison c'est du code pour C++.
    Mais on peut s'en inspirer.
    J'ai jeté un coup d'oeil aux API de Unity je n'ai rien trouvé
    Citation Envoyé par yildiz-online Voir le message
    le sqrt étant assez couteux sur nos processeurs (sauf avec le fast inverse mais bon...), il est plus économe de s'en passer et de comparer avec le carré de la distance voulue.
    bien d'accord.

  6. #6
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Citation Envoyé par yildiz-online Voir le message
    le sqrt étant assez couteux sur nos processeurs (sauf avec le fast inverse mais bon...), il est plus économe de s'en passer et de comparer avec le carré de la distance voulue.
    Ce qui est long sur le sqrt , c'est que l'algo derrière est un enchaînement de division (je crois une vingtaine pour avoir une précision correct) , il est par contre plus rapide quand le proc propose un sqrt hardware

    @Mat Oh ok disons que je suis étonné que Unity ne propose pas des fonctions avancées en math , entre autre la distance entre 2 points

  7. #7
    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
    Ouah je le voyais plus simple, en tout cas merci de votre réponse rapide.
    Je dois avouer que je ne comprends pas trop comment l'adapter a du C#
    j'ai mes 2 cubes en public GameObject, comment adapter ces 2 Objets a ce calcul svp ?

  8. #8
    Membre expérimenté
    Avatar de Greg Latiner
    Homme Profil pro
    Développeur JV
    Inscrit en
    Février 2014
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Développeur JV

    Informations forums :
    Inscription : Février 2014
    Messages : 341
    Points : 1 313
    Points
    1 313
    Par défaut
    Bonjour,

    Citation Envoyé par Jeje66 Voir le message
    j'ai mes 2 cubes en public GameObject, comment adapter ces 2 Objets a ce calcul svp ?
    Pour avoir la position de tes GO, tu as l'information grâce à leur Transform (transform.position).
    Après, si tu souhaites calculer la distance entre deux objets, tu as ce qu'il faut dans Vector3D, avec plus particulièrement Distance, magnitude ou encore sqrMagnitude.

  9. #9
    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
    Salut, Merci de m'avoir éclairé Greg Latiner.
    En effet le Vector3.Distance ça fonctionne.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/01/2007, 09h33
  2. [JFrame] Placer une fenêtre par rapport à une autre
    Par Invité dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 16/09/2005, 16h47
  3. Trier un tableau par rapport à un autre tableau
    Par deaven dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 02/05/2005, 09h27
  4. Initialisation d'une colonne par rapport à une autre colonne
    Par jeromesco dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 13/04/2005, 17h15
  5. [JCombobox] modif d'une jcombobox par rapport à une autre
    Par The Wretched dans le forum Composants
    Réponses: 2
    Dernier message: 21/03/2005, 10h35

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