IEnumerator Hatch(bool good)
    {
        //Microphone
        dialogueHandler.Narrate("Hatch", 2);
        isListening          = false;
        eggPhysicalAI.isBusy = true;

        Vector3 initPos = tf.position;

        rg.isKinematic = true;
        float duration    = 2.0f;
        float elapsedTime = 0;

        gameController.SpotLight.GetComponent <Animator>().SetBool("isOn", false);
        while (elapsedTime < duration)
        {
            tf.position  = Vector3.Lerp(initPos, new Vector3(0, 0, 0.5f), elapsedTime / duration);
            elapsedTime += Time.deltaTime;
            yield return(null);
        }
        yield return(new WaitForSeconds(1));

        eggShattered = Instantiate(EggShattered, transform.position, transform.rotation, transform.parent);
        eggParameter.TotalParPass = eggParameter.TotalParameter;

        for (int i = 0; i < eggShattered.transform.childCount; i++)
        {
            if (eggShattered.transform.GetChild(i).GetComponent <MeshRenderer>() == null)
            {
                continue;
            }
            Material eggShard = eggShattered.transform.GetChild(i).GetComponent <MeshRenderer>().material;
            shaderHandler.changeShatteredEggColor(eggShard,
                                                  eggParameter.ParSpecColor(eggParameter.SoundParameter),
                                                  eggParameter.ParSpecColor(eggParameter.KnockParameter),
                                                  eggParameter.ParSpecColor(eggParameter.StareParameter), 1);
        }
        eggParameter.inhColor = new Color(
            eggParameter.ParSpecColor(eggParameter.SoundParameter),
            eggParameter.ParSpecColor(eggParameter.KnockParameter),
            eggParameter.ParSpecColor(eggParameter.StareParameter), 1
            );
        eggParameter.Initialize();

        HideCleanEgg();

        if (good)
        {
        }
        else
        {
        }
        yield return(new WaitForSeconds(0.5f));

        eggShattered.transform.parent = GameObject.Find("Shells").transform;
        gameController.ReproduceEgg();
        yield return(null);
    }
示例#2
0
    void Start()
    {
        StartCoroutine(RandomizeTarget());
        StartCoroutine(LifeSpan());
        transform.parent = GameObject.Find("IIncubate").transform;

        if (eggParameter.TotalParPass < eggParameter.PhaseD)
        {
            if (eggParameter.TotalParPass >= eggParameter.PhaseA)
            {
                transform.Find("Particle01").gameObject.SetActive(true);
                transform.Find("Particle02").gameObject.SetActive(true);

                if (eggParameter.TotalParPass >= eggParameter.PhaseB)
                {
                    cBody.SetActive(true);
                    cFeet.SetActive(true);
                    transform.Find("Particle03").gameObject.SetActive(true);
                    transform.Find("Particle04").gameObject.SetActive(true);

                    if (eggParameter.TotalParPass >= eggParameter.PhaseC)
                    {
                        cWings.SetActive(true);
                        transform.Find("Particle05").gameObject.SetActive(true);
                        transform.Find("Particle06").gameObject.SetActive(true);
                        GetComponent <Rigidbody>().isKinematic = true;
                    }
                }
            }
        }
        if (eggParameter.TotalParPass >= eggParameter.PhaseC && eggParameter.TotalParPass < eggParameter.PhaseD)
        {
            StartCoroutine(FlyAround());
        }
        else
        {
            StartCoroutine(WalkAround());
        }



        shaderHandler.changeShatteredEggColor(cHead.GetComponent <MeshRenderer>().material,
                                              eggParameter.inhColor.r,
                                              eggParameter.inhColor.g,
                                              eggParameter.inhColor.b, 1);

        shaderHandler.changeShatteredEggColor(cBody.GetComponent <MeshRenderer>().material,
                                              eggParameter.inhColor.r,
                                              eggParameter.inhColor.g,
                                              eggParameter.inhColor.b, 1);

        shaderHandler.changeShatteredEggColor(cWings.transform.GetChild(0).GetComponent <MeshRenderer>().material,
                                              eggParameter.inhColor.r,
                                              eggParameter.inhColor.g,
                                              eggParameter.inhColor.b, 1);

        shaderHandler.changeShatteredEggColor(cWings.transform.GetChild(1).GetComponent <MeshRenderer>().material,
                                              eggParameter.inhColor.r,
                                              eggParameter.inhColor.g,
                                              eggParameter.inhColor.b, 1);
    }
    void Start()
    {
        StartCoroutine(LifeSpan());
        StartCoroutine(RandomizeTarget());
        transform.parent = GameObject.Find("IIncubate").transform;
        PID = new PID(0.01f, 0, 2f);

        GameObject sphere = transform.Find("Sphere").gameObject;

        //This makes it slow somehow
        shaderHandler.changeShatteredEggColor(transform.Find("Sphere").GetComponent <MeshRenderer>().material,
                                              eggParameter.ParameterColor(eggParameter.TotalParPass)[0],
                                              eggParameter.ParameterColor(eggParameter.TotalParPass)[1],
                                              eggParameter.ParameterColor(eggParameter.TotalParPass)[2], 1);



        if (eggParameter.TotalParPass >= eggParameter.PhaseA)
        {
            sphere.transform.localScale = new Vector3(0.15f, 0.15f, 0.15f);
            //Particle01
            transform.Find("Particle01").gameObject.SetActive(true);
            transform.Find("Particle02").gameObject.SetActive(true);

            if (eggParameter.TotalParPass >= eggParameter.PhaseB)
            {
                //Particle02
                transform.Find("Particle03").gameObject.SetActive(true);
                transform.Find("Particle04").gameObject.SetActive(true);

                if (eggParameter.TotalParPass >= eggParameter.PhaseC)
                {
                    //Particle03
                    transform.Find("Particle05").gameObject.SetActive(true);
                    transform.Find("Particle06").gameObject.SetActive(true);
                    if (eggParameter.TotalParPass >= eggParameter.PhaseD)
                    {
                        transform.Find("Particle01").gameObject.SetActive(false);
                        transform.Find("Particle02").gameObject.SetActive(false);
                        transform.Find("Particle03").gameObject.SetActive(false);
                        transform.Find("Particle04").gameObject.SetActive(false);
                        transform.Find("Particle05").gameObject.SetActive(false);
                        transform.Find("Particle06").gameObject.SetActive(false);
                    }
                }
            }
        }

        if (eggParameter.TotalParPass >= eggParameter.PhaseA && eggParameter.TotalParPass < eggParameter.PhaseB)
        {
            // sphere.transform.localScale = new Vector3(0.2f, 0.2f, 0.2f);
            hatchlingLight.intensity = 5;
        }
        else if (eggParameter.TotalParPass >= eggParameter.PhaseB && eggParameter.TotalParPass < eggParameter.PhaseC)
        {
            hatchlingLight.intensity = 10;
            // sphere.transform.localScale = new Vector3(0.25f, 0.25f, 0.25f);
        }
        else if (eggParameter.TotalParPass >= eggParameter.PhaseC && eggParameter.TotalParPass < eggParameter.PhaseD)
        {
            hatchlingLight.intensity = 15;
            // sphere.transform.localScale = new Vector3(0.3f, 0.3f, 0.3f);
        }
        else
        {
        }
    }