コード例 #1
0
    // Update is called once per frame
    void Update()
    {
        if (DetectionController.GetInstance().IsHandDetected(hand))
        {
            handController = DetectionController.GetInstance().GetHand(hand);

            //Si le doigt du raycast est le seul d'ouvert et le Palm UI n'est pas affiché
            if (handController.IsIndexOpened()) //&& !PalmUIController.GetInstance().IsPalmUIOpen()
            {
                //La position du bout du foigt et la direction auquelle il pointe
                fingerController         = handController.GetFinger(finger);
                light.transform.position = fingerController.GetFingertipPosition();
                light.transform.rotation = Quaternion.LookRotation(fingerController.GetFingerDirection());
            }
        }
    }
コード例 #2
0
    /*****************************************************
    * INITIATE RAYCAST
    *
    * INFO:    Demarre le raycast effectué à partir du bout
    *          d'un doigt pour une main quelconque.
    *
    *          Initialise le laser et la sélection d'objet
    *          par raycast et Gun gesture.
    *
    *          Fonction appelé en boucle par le DetectionController.
    *
    *****************************************************/
    public void InitiateRaycast()
    {
        //Si la main du raycast est détecté
        if (DetectionController.GetInstance().IsHandDetected(raycastHand))
        {
            handController = DetectionController.GetInstance().GetHand(raycastHand);

            //Si le doigt du raycast est le seul d'ouvert et le Palm UI n'est pas affiché
            if (handController.IsIndexOpened() && !PalmUIController.GetInstance().IsPalmUIOpen())
            {
                //Les controleurs de la main et doigt
                fingerController = handController.GetFinger(raycastFinger);
                Ray ray = fingerController.GetFingerRay();

                //Trace la ligne rouge dans le sens que pointe le doigt de la main 3D
                Debug.DrawRay(
                    fingerController.GetFingertipPosition(),
                    ray.direction,
                    raycastColor,
                    Time.deltaTime, true);

                //Active le point de lumiere (point raycast)
                lightDot.SetActive(activateLightDot);

                //Permet la selection d'objets 3D avec le raycast
                SelectObjectWithRaycast(ray);
            }
            // Si le raycast est désactivé, on reset une fois le highlight des objets
            else
            {
                CheckResetHighlight();
            }
        }
        // Si la main du raycast n'est plus détecté, on reset une fois le highlight des objets
        else
        {
            CheckResetHighlight();
        }
    }