示例#1
0
    public void calcDistances()
    {
        // Parent pointers
        GameObject parent         = this.gameObject;
        Vector3    parentPosition = parent.GetComponent <Transform>().position;

        // Distance between kid and parent
        kidParentDistance = getDistance(parent, kid);

        // Initialize distance metrics
        closestObjectDistance  = -1;
        midpointParentDistance = -1;

        // Find closest object to kid, and its distance
        KidControls KC = kid.GetComponent <KidControls>();

        if (KC != null)
        {
            var goList = KC.closestsInteractables;
            if (goList.Count > 0)
            {
                closestObjectDistance = getDistance(goList[0], kid);
            }
            foreach (GameObject currentObject in goList)
            {
                float kidCurrentObjectDistance = getDistance(currentObject, kid);
                if (kidCurrentObjectDistance <= closestObjectDistance)
                {
                    closestObjectDistance = kidCurrentObjectDistance;
                    closestObjectPosition = currentObject.GetComponent <Transform>().position;
                }
            }
        }

        // If there is at least one object, compute the midpoint data
        if (closestObjectDistance != -1)
        {
            midpointPosition       = (kid.GetComponent <Transform>().position + closestObjectPosition) / 2;
            midpointParentDistance = (midpointPosition - parentPosition).magnitude;
        }
    }
示例#2
0
    private void Update()
    {
        currentTimer -= Time.deltaTime;
        if (doSwitch && currentTimer < 0f && !credit)
        {
            credit = true;
            SceneManager.LoadScene("CreditsScreen");
        }
        if ((Input.GetButtonDown("ChangeToParent") || currentTimer < 0f) && doSwitch == false)
        {
            KidControls kidControls = (KidControls)FindObjectOfType(typeof(KidControls));
            // If we are already in parent mode do nothing
            if (kidControls.recording == false && kidControls.replaying == true)
            {
                return;
            }

            history_backup = new List <KidControls.SimpleTransform>();
            foreach (KidControls.SimpleTransform item in kidControls.history)
            {
                history_backup.Add(item);
            }
            Scene scene = SceneManager.GetActiveScene();
            SceneManager.LoadScene(scene.name);

            doSwitch     = true;
            currentTimer = 120f;
        }

        if (doSwitch)
        {
            frameCounter++;
        }

        if (frameCounter == 10)
        {
            currentTimer = 120f;
            KidControls kidControls = (KidControls)FindObjectOfType(typeof(KidControls));

            KidControls          kidControlsNewScene = (KidControls)FindObjectOfType(typeof(KidControls));
            ParentManualControls parentControls      = (ParentManualControls)FindObjectOfType(typeof(ParentManualControls));
            AI_Ctrl ai_ctrl = (AI_Ctrl)FindObjectOfType(typeof(AI_Ctrl));

            if (kidControlsNewScene != null)
            {
                kidControls.history           = history_backup;
                kidControlsNewScene.recording = false;
                kidControlsNewScene.replaying = true;
            }
            if (parentControls != null)
            {
                parentControls.activateManualControls = true;
                var navMesh = parentControls.gameObject.GetComponent <NavMeshAgent>();
                if (navMesh != null)
                {
                    navMesh.enabled = false;
                }
            }
            if (ai_ctrl != null)
            {
                ai_ctrl.enableParent = false;
                var bc = ai_ctrl.GetComponent <BoxCollider>();
                if (bc != null)
                {
                    bc.enabled = true;
                }
                var cc = ai_ctrl.GetComponent <CapsuleCollider>();
                if (cc != null)
                {
                    cc.enabled = true;
                }
            }
            GameManager_Scoring.GetInstance().isAdult = true;
        }
    }