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