Пример #1
0
 // Update is called once per frame
 void Update()
 {
     if (!atInn)
     {
         fatigue += fatigueRate * Time.deltaTime;
     }
     idleTime += Time.deltaTime;
     CurrentBehaviours.RemoveAll(behaviour => behaviour == null);  // should i do this less often?
     Quests.RemoveAll(Quest => Quest == null);                     // should i do this less often?
     if (CurrentBehaviours.Count != 0)
     {
         idleTime = 0;
         return;
     }
     if (Quests.Count > 0 && (!atInn || fatigue <= 0) && (!atQuest) && CharacterList.Characters.Count >= 4)
     {
         idleTime = 0;
         Travel     travel = gameObject.AddComponent <Travel>();
         GameObject Quest  = Quests[0];
         Quests.ForEach(
             q => {
             if (Vector3.Distance(q.transform.position, transform.position) < Vector3.Distance(Quest.transform.position, transform.position))
             {
                 Quest = q;
             }
         }
             );
         travel.targetLocation = Quest.transform.position;
         CurrentBehaviours.Add(travel);
     }
     else if (!atInn && !atQuest && idleTime > 1f)
     {
         idleTime = 0;
         Travel travel = gameObject.AddComponent <Travel>();
         travel.targetLocation = new Vector3(0f, 0f, 0f);
         CurrentBehaviours.Add(travel);
     }
 }