コード例 #1
0
    private void FixedUpdate()
    {
        // ---------------------------------------------------------------------------------------------------------------------
        // RayCast from palm position
        if (listener.rInView)
        {
            float   shaving = 0.5f;
            Vector3 rayMod  = new Vector3(0, 0.2f, -0.5f);
            Vector3 rayDir  = new Vector3(listener.GetArmDir().x *shaving, listener.GetArmDir().y, listener.GetArmDir().z * -1.0f);

            Ray r = new Ray(leapController.transform.position + rayMod, rayDir * 300.0f);
            Debug.DrawRay(leapController.transform.position + rayMod, rayDir * 300.0f);

            RaycastHit hit;
            if (Physics.Raycast(r, out hit))
            {
                if (currentGameState == gameState.FULL_BODY_VIEW && hit.collider.tag == "zoom-zone")
                {
                    Debug.Log("HIT");
                    if (listener.selectionGestureDetected)
                    {
                        selected = hit.collider.gameObject;
                    }
                }

                /*
                 * if (currentGameState != gameState.FULL_BODY_VIEW && (hit.collider.name == "Diag.Orb(Clone)" ||
                 *                                                  hit.collider.name == "Sym.Orb(Clone)" || hit.collider.name == "Op.Orb(Clone)"))
                 * {
                 *  Debug.Log("askdjflkjwef");
                 * }
                 */

                if (currentGameState != gameState.FULL_BODY_VIEW && hit.collider.tag == "orb")
                {
                    if (listener.selectionGestureDetected)
                    {
                        selected = hit.collider.gameObject;
                        Debug.Log(selected);
                    }
                }
            }
        }

        if (selected != null)
        {
            if (currentGameState != gameState.FULL_BODY_VIEW && selected.tag == "orb")
            {
                gController.textToWrite = selected.GetComponent <MedicalOrb>().GetMedicalEvent().GetInfo();
            }
            // ONLY HAPPENS if in full body view. There is no summoning otherwise
            if (listener.rInView && currentGameState == gameState.FULL_BODY_VIEW)
            {
                Debug.Log("Selected an object!!!!!!!!!!!!!!!!!");

                if (listener.summonGestureDetected)
                {
                    // CALL CHRISTIAN FUNC
                    switch (selected.name)
                    {
                    case "HeadCollider":
                    {
                        currentGameState = gameState.HEAD_NECK_VIEW;
                        Debug.Log("changed game state");
                        if (selected.tag != "orb")
                        {
                            selected = null;
                        }
                        break;
                    }

                    case "TorsoCollider":
                    {
                        currentGameState = gameState.TORSO_VIEW;
                        Debug.Log("changed game state");
                        if (selected.tag != "orb")
                        {
                            selected = null;
                        }
                        break;
                    }

                    case "RightArmCollider":
                    {
                        currentGameState = gameState.RIGHT_ARM_VIEW;
                        Debug.Log("changed game state");
                        if (selected.tag != "orb")
                        {
                            selected = null;
                        }
                        break;
                    }

                    case "LeftArmCollider":
                    {
                        currentGameState = gameState.LEFT_ARM_VIEW;
                        Debug.Log("changed game state");
                        if (selected.tag != "orb")
                        {
                            selected = null;
                        }
                        break;
                    }

                    case "LeftLegCollider":
                    {
                        currentGameState = gameState.LEFT_LEG_VIEW;
                        Debug.Log("changed game state");
                        if (selected.tag != "orb")
                        {
                            selected = null;
                        }
                        break;
                    }

                    case "RightLegCollider":
                    {
                        currentGameState = gameState.RIGHT_LEG_VIEW;
                        Debug.Log("changed game state");
                        if (selected.tag != "orb")
                        {
                            selected = null;
                        }
                        break;
                    }
                    }
                }
            }
        }
    }