// 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"); } } }