예제 #1
0
    // Update is called once per frame
    void Update()
    {
        Debug.Log(transform.name + " : " + state);
        if (pig.alive)
        {
            if (state == State.Death)
            {
                animationState = "death";
                walkpoint.Stop();
                StartCoroutine("Death");
            }

            if (state == State.Playing)
            {
                if (weather.isRaining)
                {
                    state = State.Wandering;
                    walkpoint.Resume();
                }
            }

            if (state == State.GetFood)
            {
                walkpoint.Resume();
                animationState = "run";
                if (walkpoint.ReachDestination(1.05F * pig.mass))
                {
                    animationState = "eat";
                    pig.energy    += 10F;
                    pig.GetBigger();
                    walkpoint.Stop();
                    state = State.Eating;
                    StartCoroutine("Eating");
                }
            }

            if (state == State.Panic)
            {
                walkpoint.Resume();

                if (pig.energy >= 200F)
                {
                    state = State.Fulled;
                }
                if (pig.energy < 0F)
                {
                    state = State.Death;
                }
                if (!weather.isRaining)
                {
                    state = State.Wandering;
                }
                animationState = "run";
                if (walkpoint.ReachDestination(0.5F))
                {
                    walkpoint.SetWalkPointToAgent();
                }
            }
            if (state == State.Fulled)
            {
                animationState = "idle2";
                if (pig.energy <= 100F)
                {
                    state = State.Wandering;
                    walkpoint.Resume();
                }
                if (weather.isRaining)
                {
                    state = State.Panic;
                }
                if (weather.isHot)
                {
                    state = State.SeekMud;
                }
            }
            if (state == State.Wandering)
            {
                walkpoint.Resume();
                if (pig.energy >= 200F)
                {
                    state = State.Fulled;
                }
                if (weather.isRaining)
                {
                    state = State.Panic;
                }
                if (weather.isHot)
                {
                    state = State.SeekMud;
                }
                if (pig.energy <= 30F)
                {
                    state = State.Rest;
                }
                animationState = "walk";
                if (walkpoint.ReachDestination(0.5F))
                {
                    walkpoint.SetWalkPointToAgent();
                }
            }
            if (state == State.SeekMud)
            {
                if (!weather.isHot)
                {
                    state = State.Wandering;
                }
                animationState = "run";
                if (walkpoint.ReachDestination(0.5F))
                {
                    walkpoint.SetWalkPointToAgent();
                }
            }

            if (state == State.GetMud)
            {
                if (walkpoint.ReachDestination(Random.Range(0F, 1F)))
                {
                    animationState = "idle1";
                    walkpoint.Stop();
                    state = State.Playing;
                    StartCoroutine("Playing");
                }
            }
            if (state == State.Rest)
            {
                animationState = "idle2";
                walkpoint.Stop();
                state = State.Resting;
                StartCoroutine("Resting");
            }
        }
    }