Esempio n. 1
0
    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());
        }
    }
Esempio n. 2
0
    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));
    }