Пример #1
0
    IEnumerator Start()
    {
        if (currentState != stateSelection.IdleState)
        {
            Debug.LogWarning("[AIController] other than IdleState is selected at Start");
        }

        while (manualControl)
        {
            yield return(UpdateAIStateOnce());
        }

        while (!manualControl)
        {
            print("[AIController] Started Automatic routine");

            selectedState = stateSelection.SeekState;
            StartCoroutine(UpdateAIStateOnce());
            yield return(new WaitForSeconds(delayAIcalculation * 5));

            selectedState = stateSelection.IdleState;
            StartCoroutine(UpdateAIStateOnce());
            yield return(new WaitForSeconds(delayAIcalculation * 5));

            selectedState = stateSelection.KeepAwayState;
            StartCoroutine(UpdateAIStateOnce());
            yield return(new WaitForSeconds(delayAIcalculation * 10));
        }
    }
Пример #2
0
 void UpdateBotBrain(stateSelection newState)
 {
     if (newState == stateSelection.FleeState)
     {
         Flee(target.transform.position);
     }
     else if (newState == stateSelection.SeekState)
     {
         Seek(target.transform.position);
     }
     else if (newState == stateSelection.IdleState)
     {
         Idle(Vector3.zero);
     }
     else if (newState == stateSelection.PursueState)
     {
         Pursue(Vector3.zero);
     }
     else if (newState == stateSelection.EvadeState)
     {
         Evade(Vector3.zero);
     }
     else if (newState == stateSelection.WanderState)
     {
         Wander(Vector3.zero);
     }
     else if (newState == stateSelection.HideState)
     {
         Hide(Vector3.zero);
     }
     else if (newState == stateSelection.StalkState)
     {
         Stalk(Vector3.zero);
     }
     else if (newState == stateSelection.KeepAwayState)
     {
         KeepAway(Vector3.zero);
     }
     else
     {
         Debug.LogError("[Bot] Update() on object " + gameObject.name + "default case");
     }
 }
Пример #3
0
    IEnumerator UpdateAIStateOnce()
    {
        currentState = selectedState;

        if (currentState == stateSelection.FleeState)
        {
            if (FleeStateEntryEvent != null)
            {
                FleeStateEntryEvent();
            }
        }
        else if (currentState == stateSelection.SeekState)
        {
            if (SeekStateEntryEvent != null)
            {
                SeekStateEntryEvent();
            }
        }
        else if (currentState == stateSelection.IdleState)
        {
            if (IdleStateEntryEvent != null)
            {
                IdleStateEntryEvent();
            }
        }
        //       else if (currentState == stateSelection.PursueState)
        //       {
        //           if (PursueStateEntryEvent != null)
        //               PursueStateEntryEvent();
        //       }
        //       else if (currentState == stateSelection.EvadeState)
        //       {
        //           if (EvadeStateEntryEvent != null)
        //               EvadeStateEntryEvent();
        //       }
        else if (currentState == stateSelection.WanderState)
        {
            if (WanderStateEntryEvent != null)
            {
                WanderStateEntryEvent();
            }
        }
        else if (currentState == stateSelection.HideState)
        {
            if (HideStateEntryEvent != null)
            {
                HideStateEntryEvent();
            }
        }
//        else if (currentState == stateSelection.StalkState)
//        {
//            if (StalkStateEntryEvent != null)
//                StalkStateEntryEvent();
//        }
        else if (currentState == stateSelection.KeepAwayState)
        {
            if (KeepAwayStateEntryEvent != null)
            {
                KeepAwayStateEntryEvent();
            }
        }
        else
        {
            Debug.LogError("[AIController] Update() on object " + gameObject.name + "default case");
        }

        yield return(new WaitForSeconds(delayAIcalculation));
    }