IEnumerator StartGameOverAnimations() { skyscrapers = GameObject.FindGameObjectsWithTag("Hex"); foreach (GameObject skyscraper in skyscrapers) { skyscraper.GetComponentInChildren <Text>().gameObject.SetActive(false); } if (DataScript.isCityOpen) { gameOverCity.SetActive(true); } Debug.Log("GAME OVER"); mainCam.orthographic = false; mainCam.fieldOfView = 45f; gameOverCameraLookPos = Vector3.zero; //ragdoll.SetActive(false); for (int j = 0; j < 60; j++) { mainCam.transform.position = Vector3.MoveTowards(Camera.main.transform.position, gameOverCameraPos, 0.2f); mainCam.transform.LookAt(gameOverCameraLookPos); yield return(new WaitForEndOfFrame()); } foreach (GameObject skyscraper in skyscrapers) { SkyscraperScript skyscraperScript = skyscraper.GetComponent <SkyscraperScript>(); StartCoroutine(skyscraperScript.SkyScraperGameOverAnim()); } while (true) { gameOverCameraPos.y = DataScript.highestPointOnAHex + 20; mainCam.transform.position = Vector3.MoveTowards(Camera.main.transform.position, gameOverCameraPos, 0.2f); mainCam.transform.LookAt(gameOverCameraLookPos); yield return(new WaitForEndOfFrame()); } }
IEnumerator CarryRagdollToNewPos(GameObject hex) { SkyscraperScript skyscraperScript = hex.GetComponent <SkyscraperScript>(); DataScript.inputLock = true; SetJumpBeziers(transform.position, hex.transform.position); tParam = 0; //Ragdoll look to target rotation Quaternion targetRotation = Quaternion.LookRotation(r3.position - transform.position); for (int k = 0; k < 10; k++) { transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, 20f * Time.deltaTime); yield return(new WaitForEndOfFrame()); } //----------------------------------- //Ragdoll move to target rotation animator.SetBool("isJumping", true); animator.SetBool("isOnAir", true); for (int j = 0; j < 20; j++) { tParam += 0.05f; SetRagdollPosition(); if (tParam < 0.6f) { if (tParam > 0.3f) { animator.SetBool("isJumping", false); animator.SetBool("isOnAir", false); } transform.localScale += Vector3.one * 0.02f; } else { transform.localScale -= Vector3.one * 0.03f; } yield return(new WaitForEndOfFrame()); } //----------------------------------- Color initialRagdollColor = ragdollMat.color; Color initialHexColor = hex.GetComponent <Renderer>().material.color; int iCount = 15; float counter = 0; float duration = 0.3f; int hexCount = skyscraperScript.hexCount; int diff = hexCount - ragdollCount; int incrementAmount = Mathf.CeilToInt(diff / iCount); //Set hex count and color in its script StartCoroutine(skyscraperScript.RagdollOnThis(initialRagdollColor, ragdollCount, ragdollColorNo)); //Set ragdoll count and color for (int i = 0; i < iCount; i++) { if (Mathf.Abs(ragdollCount - hexCount) > incrementAmount) { ragdollCount += incrementAmount; SetCountText(); } counter += Time.deltaTime / 2; //turn on and off the colors, no colors make the game easier if (DataScript.isColorsActive) { ragdollMat.color = Color.Lerp(initialRagdollColor, initialHexColor, counter / duration); } yield return(new WaitForEndOfFrame()); } //-------------------------------- //making things clear before finish transform.localScale = initialScale; /* Vector3 newPos = transform.position; * newPos = new Vector3(hex.transform.position.x, initialYPos, hex.transform.position.z); * transform.position = newPos;*/ ragdollCount = hexCount; SetCountText(); //turn on and off the colors, no colors make the game easier if (DataScript.isColorsActive) { ragdollMat.color = initialHexColor; ragdollColorNo = skyscraperScript.hexColorNo; } DataScript.inputLock = false; StopCoroutine(CarryRagdollToNewPos(hex)); }