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; } }
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; } }