Пример #1
0
 public void stopWalk()
 {
     if (target == home || target == waterbank || target == plate)
     {
         angelAction = AngelAction.Idle;
     }
     agent.isStopped = true;
     agent.ResetPath();
     anim.SetBool("Walk", false);
     anim.SetBool("Run", false);
     anim.SetBool("Idle", true);
     isWalk = false;
     target = null;
 }
Пример #2
0
    // Start is called before the first frame update
    void Start()
    {
        agent = GetComponent <NavMeshAgent>();
        anim  = GetComponent <Animator>();
        SleepAngel.GetComponent <Animator>().SetBool("Sleep", true);
        SkinnedMeshRenderer[] comps = SleepAngel.GetComponentsInChildren <SkinnedMeshRenderer>();
        foreach (SkinnedMeshRenderer comp in comps)
        {
            comp.enabled = false;
        }

        #region creat angelAtHome
        angelAtHome = new List <AngelAction>();
        angelAtHome.Add(AngelAction.Idle);
        angelAtHome.Add(AngelAction.Idle);
        angelAtHome.Add(AngelAction.Idle);
        angelAtHome.Add(AngelAction.FeedChicken);
        angelAtHome.Add(AngelAction.FeedChicken);
        angelAtHome.Add(AngelAction.Harvest);
        angelAtHome.Add(AngelAction.Harvest);
        angelAtHome.Add(AngelAction.PlayQin);
        angelAtHome.Add(AngelAction.SeeFish);
        angelAtHome.Add(AngelAction.SeeFish);
        #endregion

        #region creat angelAtHomeScare
        angelAtHomeScare = new List <AngelAction>();
        angelAtHomeScare.Add(AngelAction.Idle);
        angelAtHomeScare.Add(AngelAction.Idle);
        angelAtHomeScare.Add(AngelAction.Idle);
        angelAtHomeScare.Add(AngelAction.Idle);
        angelAtHomeScare.Add(AngelAction.FeedChicken);
        angelAtHomeScare.Add(AngelAction.Harvest);
        angelAtHomeScare.Add(AngelAction.PlayQin);
        angelAtHomeScare.Add(AngelAction.PlayQin);
        angelAtHomeScare.Add(AngelAction.PlayQin);
        angelAtHomeScare.Add(AngelAction.SeeFish);
        #endregion

        angelAction = AngelAction.Idle;
    }
Пример #3
0
 public void calculateProb()
 {
     if (gameManager.chapter == GameManager.Chapter.Tree && angelAction != AngelAction.GoOut)
     {
         if (chickenOut)
         {
             target      = ChickenPos;
             angelAction = AngelAction.GoOut;
             anim.Play("Idle");
             walk();
         }
         else if (goOut_tree / Random.Range(30.0f, 100.0f) >= 1.0f)
         {
             target      = tree;
             goOut_tree  = 0.0f;
             angelAction = AngelAction.GoOut;
             anim.Play("Idle");
             walk();
         }
         else if (goOut_plateshop / Random.Range(30.0f, 100.0f) >= 1.0f)
         {
             target          = plateshop;
             goOut_plateshop = 0.0f;
             angelAction     = AngelAction.GoOut;
             anim.Play("Idle");
             walk();
         }
         else if (goOut_water / Random.Range(30.0f, 100.0f) >= 1.0f)
         {
             target      = well;
             goOut_water = 0.0f;
             angelAction = AngelAction.GoOut;
             anim.Play("Idle");
             walk();
         }
     }
 }
Пример #4
0
    // Update is called once per frame
    void Update()
    {
        #region ensure love & scare
        if (love < 0.0f)
        {
            love = 0.0f;
        }
        if (love > uIManager.loveMax)
        {
            love = uIManager.loveMax;
        }
        if (scare < 0.0f)
        {
            scare = 0.0f;
        }
        if (scare > uIManager.scareMax)
        {
            scare = uIManager.scareMax;
        }
        #endregion

        if (fruit != null)
        {
            if (!fruit.activeSelf || fruit.tag != "Fruit")
            {
                fruit = null;
                stopWalk();
            }
            else
            {
                target = fruit.transform;
                walk();
            }
        }

        if (isWalk)
        {
            Vector3 dis = target.position - gameObject.transform.position;
            dis.y = 0.0f;
            if (dis.magnitude < 0.3)
            {
                Debug.Log(angelAction);

                if (target == tree)
                {
                    anim.Play("Sit_ground");
                }
                else if (target == well)
                {
                    getwater = true;
                    wellBGM.Play();
                    pickfruit.SetActive(false);
                    StartCoroutine(wellBGMPlay());
                }
                else if (target == plateshop)
                {
                    getplate = true;
                }
                else if (target == waterbank)
                {
                    getwater  = false;
                    fillwater = true;
                }
                else if (target == plate)
                {
                    getplate  = false;
                    fillplate = true;
                }

                stopWalk();

                if (gameManager.chapter == GameManager.Chapter.Tree && gameManager.pcPlayer.day)
                {
                    if (angelAction == AngelAction.FeedChicken || angelAction == AngelAction.Harvest)
                    {
                        anim.Play("Grab_from_floor");
                        return;
                    }
                    else if (angelAction == AngelAction.SeeFish)
                    {
                        gameObject.transform.rotation = pool.rotation;
                        anim.Play("Sit_chair");
                        return;
                    }
                    else if (angelAction == AngelAction.PlayQin)
                    {
                        gameObject.transform.rotation = qin.rotation;
                        anim.Play("Play_piano");
                        GuzhengBGM.Play();
                        scare -= 40.0f;
                        return;
                    }
                    else if (angelAction == AngelAction.Idle)
                    {
                        anim.Play("Stand");
                        return;
                    }
                }

                if (chickenOut)
                {
                    chickenOut  = false;
                    pickChicken = true;
                }

                if (fruit != null)
                {
                    anim.Play("Grab_from_floor");
                    if (fruit.name == "Apple")
                    {
                        love += 3.0f;
                        uIManager.showFeeling = UIManager.Emoji.Happy;
                    }
                    else if (fruit.name == "Banana")
                    {
                        love -= 1.0f;
                        uIManager.showFeeling = UIManager.Emoji.Dissatisfied;
                    }
                    else if (fruit.name == "Kiwi")
                    {
                        love += 1.0f;
                        uIManager.showFeeling = UIManager.Emoji.Happy;
                    }
                    else if (fruit.name == "Pear")
                    {
                        love += 5.0f;
                        uIManager.showFeeling = UIManager.Emoji.Happy;
                    }
                    else if (fruit.name == "Strawberry")
                    {
                        uIManager.showFeeling = UIManager.Emoji.Confused;
                    }

                    fruit.SetActive(false);
                    fruit = null;
                }

                if (gameManager.chapter == GameManager.Chapter.Tree_night || gameManager.chapter == GameManager.Chapter.Parrot_night)
                {
                    setSleep(true);
                }

                if (gameManager.chapter == GameManager.Chapter.Tree && angelAction == AngelAction.GoOut)
                {
                    StartCoroutine("Leave");
                }
            }
        }

        #region IF Angle at home and Idle
        if (gameManager.chapter == GameManager.Chapter.Tree &&
            anim.GetCurrentAnimatorStateInfo(0).IsName("Idle") && !isWalk && angelAction != AngelAction.GoOut && !getwater && !getplate)
        {
            AngelAction newAction;

            if (scare < 100)
            {
                angelAtHome = RandomSortList(angelAtHome);
                newAction   = angelAtHome[0];
            }
            else
            {
                angelAtHomeScare = RandomSortList(angelAtHomeScare);
                newAction        = angelAtHomeScare[0];
            }

            if (newAction == angelAction && newAction != AngelAction.Idle)
            {
                return;
            }

            //Debug.Log(newAction);

            if (newAction == AngelAction.FeedChicken)
            {
                target = chicken;
                walk();
            }
            else if (newAction == AngelAction.Harvest)
            {
                target = farm;
                walk();
            }
            else if (newAction == AngelAction.SeeFish)
            {
                target = pool;
                walk();
            }
            else if (newAction == AngelAction.PlayQin)
            {
                target = qin;
                walk();
            }
            else if (newAction != angelAction)
            {
                target = idle;
                walk();
            }
            else
            {
                anim.Play("Stand");
                return;
            }

            angelAction = newAction;
        }
        #endregion

        if (!anim.GetCurrentAnimatorStateInfo(0).IsName("Play_piano"))
        {
            GuzhengBGM.Stop();
        }

        if (anim.GetBool("Sleep"))
        {
            scare -= 0.1f;
        }
    }