Exemplo n.º 1
0
    // Fonction qui permet, selon le yield, d'avoir une certaine pause entre l'activation et la désactivation des textes
    IEnumerator DetMessageLimite()            // IEnumerator est utiliser pour faire une pause
    {
        yield return(new WaitForSeconds(2f)); // Arrête l'exécution de la coroutine pendant 2 secondes

        MessageLimite.SetActive(false);       // Désactive le MessageLimite
        MessageErreur2.SetActive(false);      // Désactive le MessageErreur2
    }
Exemplo n.º 2
0
    // Update is called once per frame
    void Update()
    {
        // appelle la fonction CalculAngle
        CalculAngle();

        if (Input.GetMouseButtonDown(0)) // Regarde si la bouton droite de la souris a été appuyé
        {
            // Prend les valeurs du raycast
            RaycastHit hit;
            // Prend le rayon qui va de la caméra principale à un point d'écran
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

            if (Physics.Raycast(ray, out hit)) // Si le rayon croise un collisonneur(GameObject), il retourne vrai, sinon il retourne faux
            {
                /* Si l'utilisateur clique sur la phalange distale du majeur, si les autres composantes du majeur n'ont pas changées
                 * de rotation, si la position initiale du poignet n'a pas changé et si la main et l'avant-bras n'ont pas subis de rotation*/
                if (hit.transform.tag == "BoutDoitMajeur" && nbrClickM == 0 && nbrClickD == 0 && PositionPoignetD == PositionPoignet.transform.rotation.x &&
                    ToutLaRotation.transform.rotation == RotationInitiale)
                {
                    if (CalAngleBout <= DifAngleBout)                              // Si la valeur de la phalange distale du calcul de l'angle d'Euler z est plus petite ou égale à la limite de l'angle d'Euler z de la phalange distale
                    {
                        Majeurz1 = -3;                                             // prend la valeur -3
                        BoutMajeur.transform.Rotate(Majeurx1, Majeury1, Majeurz1); // rotation de la phalange distale
                        nbrClickB++;                                               // le nombre de clique pour la phalange distale augmente de 1
                    }
                    else
                    {
                        MessageLimite.SetActive(true);  // Active le messageLimite
                        // Débute la fonction DetMessageLimite comme une coroutine qui peut arrêter son exécution
                        StartCoroutine(DetMessageLimite());
                    }
                }
                // si l'utilisateur clique sur la phalange mediane ou proximale et que la phalange distale a subi une rotation et le poignet non
                if ((hit.transform.tag == "MoyenDoitMajeur" || hit.transform.tag == "DebutDoitMajeur") && nbrClickB != 0 && PositionPoignetD == PositionPoignet.transform.rotation.x)
                {
                    MessageErreur.SetActive(true); // Active le messageErreur
                    MessageGuide.SetActive(true);  // Active le messageGuide
                    // Débute la fonction DisparaitreMessage comme une coroutine qui peut arrêter son exécution
                    StartCoroutine(DisparaitreMessage());
                }

                /* Si l'utilisateur clique sur la phalange médiane du majeur, si les autres composantes du majeur n'ont pas changées
                 * de rotation, si la position initiale du poignet n'a pas changé et si la main et l'avant-bras n'ont pas subis de rotation*/
                if (hit.transform.tag == "MoyenDoitMajeur" && nbrClickB == 0 && nbrClickD == 0 && PositionPoignetD == PositionPoignet.transform.rotation.x &&
                    ToutLaRotation.transform.rotation == RotationInitiale)
                {
                    // Si la valeur de la phalange médiane du calcul de l'angle d'Euler z est plus grande ou égale à la limite de l'angle d'Euler z de la phalange médiane
                    if (CalAngleMoyen >= DifAngleMoyen)
                    {
                        Majeurz2 = -3;                                              // prend la valeur -3
                        MoyenMajeur.transform.Rotate(Majeurx2, Majeury2, Majeurz2); // rotation de la phalange médiane
                        nbrClickM++;                                                // le nombre de clique pour la phalange médiane augmente de 1
                    }
                    else
                    {
                        MessageLimite.SetActive(true); // Active le messageLimite
                        // Débute la fonction DetMessageLimite comme une coroutine qui peut arrêter son exécution
                        StartCoroutine(DetMessageLimite());
                    }
                }
                // si l'utilisateur clique sur la phalange distale ou proximale et que la phalange médiane a subi une rotation et le poignet non
                if ((hit.transform.tag == "BoutDoitMajeur" || hit.transform.tag == "DebutDoitMajeur") && nbrClickM != 0 && PositionPoignetD == PositionPoignet.transform.rotation.x)
                {
                    MessageErreur.SetActive(true);   // Active le messageErreur
                    MessageGuide.SetActive(true);    // Active le messageGuide
                    // Débute la fonction DisparaitreMessage comme une coroutine qui peut arrêter son exécution
                    StartCoroutine(DisparaitreMessage());
                }

                /* Si l'utilisateur clique sur la phalange proximale du majeur, si les autres composantes du majeur n'ont pas changées
                 * de rotation, si la position initiale du poignet n'a pas changé et si la main et l'avant-bras n'ont pas subis de rotation*/
                if (hit.transform.tag == "DebutDoitMajeur" && nbrClickB == 0 && nbrClickM == 0 && PositionPoignetD == PositionPoignet.transform.rotation.x &&
                    ToutLaRotation.transform.rotation == RotationInitiale)
                {
                    // Si la valeur de la phalange proximale du calcul de l'angle d'Euler z est plus grande ou égale à la limite de l'angle d'Euler z de la phalange proximale
                    // ou que la phalange proximale n'a pas encore subi de rotation
                    if (CalAngleDebut >= DifAngleDebut || nbrClickD == 0)
                    {
                        Majeurz3 = -3;                                              // prend la valeur -3
                        DebutMajeur.transform.Rotate(Majeurx3, Majeury3, Majeurz3); // rotation de la phalange proximale
                        nbrClickD++;                                                // le nombre de clique pour la phalange proximale augmente de 1
                    }
                    else
                    {
                        MessageLimite.SetActive(true); // Active le messageLimite
                        // Débute la fonction DetMessageLimite comme une coroutine qui peut arrêter son exécution
                        StartCoroutine(DetMessageLimite());
                    }
                }
                // si l'utilisateur clique sur la phalange distale ou médiane et que la phalange proximale a subi une rotation et le poignet non
                if ((hit.transform.tag == "BoutDoitMajeur" || hit.transform.tag == "MoyenDoitMajeur") && nbrClickD != 0 && PositionPoignetD == PositionPoignet.transform.rotation.x)
                {
                    MessageErreur.SetActive(true); // Active le messageErreur
                    MessageGuide.SetActive(true);  // Active le messageGuide
                    // Débute la fonction DisparaitreMessage comme une coroutine qui peut arrêter son exécution
                    StartCoroutine(DisparaitreMessage());
                }

                /* Si l'utilisateur clique sur la phalange distale extension du majeur, si le nombre de clique du distale est plus grand que 0,
                 * si la position initiale du poignet n'a pas changé et si la main et l'avant-bras n'ont pas subis de rotation*/
                if (hit.transform.tag == "BoutDoigtMajeurD" && nbrClickB > 0 && PositionPoignetD == PositionPoignet.transform.rotation.x &&
                    ToutLaRotation.transform.rotation == RotationInitiale)
                {
                    Majeurz1 = 3;                                              // prend la valeur 3
                    BoutMajeur.transform.Rotate(Majeurx1, Majeury1, Majeurz1); // rotation de la phalange distale
                    nbrClickB--;                                               // le nombre de clique pour la phalange distale diminue de 1
                }
                else
                if (hit.transform.tag == "BoutDoigtMajeurD" && nbrClickB <= 0) // Si l'utilisateur clique sur la phalange distale extension et que le nombre de clique est plus petit ou égal à 0
                {
                    MessageErreur2.SetActive(true);                            // Active le messageErreur2
                    // Débute la fonction DetMessageLimite comme une coroutine qui peut arrêter son exécution
                    StartCoroutine(DetMessageLimite());
                }

                /* Si l'utilisateur clique sur la phalange médiane extension du majeur, si le nombre de clique du médiane est plus grand que 0,
                 * si la position initiale du poignet n'a pas changé et si la main et l'avant-bras n'ont pas subis de rotation*/
                if (hit.transform.tag == "MoyenDoigtMajeurD" && nbrClickM > 0 && PositionPoignetD == PositionPoignet.transform.rotation.x &&
                    ToutLaRotation.transform.rotation == RotationInitiale)
                {
                    Majeurz2 = 3;                                               // prend la valeur 3
                    MoyenMajeur.transform.Rotate(Majeurx2, Majeury2, Majeurz2); // rotation de la phalange médiane
                    nbrClickM--;                                                // le nombre de clique pour la phalange médiane diminue de 1
                }
                else
                if (hit.transform.tag == "MoyenDoigtMajeurD" && nbrClickM <= 0) // Si l'utilisateur clique sur la phalange médiane extension et que le nombre de clique est plus petit ou égal à 0
                {
                    MessageErreur2.SetActive(true);                             // Active le messageErreur2
                    // Débute la fonction DetMessageLimite comme une coroutine qui peut arrêter son exécution
                    StartCoroutine(DetMessageLimite());
                }

                /* Si l'utilisateur clique sur la phalange proximale extension du majeur, si le nombre de clique du proximale est plus grand que 0,
                 * si la position initiale du poignet n'a pas changé et si la main et l'avant-bras n'ont pas subis de rotation*/
                if (hit.transform.tag == "DebutDoigtMajeurD" && nbrClickD > 0 && PositionPoignetD == PositionPoignet.transform.rotation.x &&
                    ToutLaRotation.transform.rotation == RotationInitiale)
                {
                    Majeurz3 = 3;                                               // prend la valeur 3
                    DebutMajeur.transform.Rotate(Majeurx3, Majeury3, Majeurz3); // rotation de la phalange proximale
                    nbrClickD--;                                                // le nombre de clique pour la phalange proximale diminue de 1
                }
                else
                if (hit.transform.tag == "DebutDoigtMajeurD" && nbrClickD <= 0) // Si l'utilisateur clique sur la phalange proximale extension et que le nombre de clique est plus petit ou égal à 0
                {
                    MessageErreur2.SetActive(true);                             // Active le messageErreur2
                    StartCoroutine(DetMessageLimite());                         // Débute la fonction DetMessageLimite comme une coroutine qui peut arrêter son exécution
                }

                // Si l'utilisateur clique sur n'importe quelle phalange flexion ou extension et si le poignet ou la main et l'avant-bras n'ont plus la même rotation
                if ((hit.transform.tag == "DebutDoigtMajeurD" || hit.transform.tag == "MoyenDoigtMajeurD" || hit.transform.tag == "BoutDoigtMajeurD" ||
                     hit.transform.tag == "BoutDoitMajeur" || hit.transform.tag == "MoyenDoitMajeur" || hit.transform.tag == "DebutDoitMajeur") &&
                    (PositionPoignetD != PositionPoignet.transform.rotation.x || ToutLaRotation.transform.rotation != RotationInitiale))
                {
                    MessageErreur.SetActive(true); // Active le messageErreur
                    MessageGuide.SetActive(true);  // Active le messageGuide
                    // Débute la fonction DisparaitreMessage comme une coroutine qui peut arrêter son exécution
                    StartCoroutine(DisparaitreMessage());
                }

                // Réinitialise les valeurs
                Majeurz1 = 0;
                Majeurz2 = 0;
                Majeurz3 = 0;
            }
        }
    }