void OnTriggerEnter(Collider col) { if (col.tag == "AICollider") { if (AIstate != AIWanderState.WalkingTowards) { return; } if (col.gameObject != InterestPoints[interestPicked].gameObject) { return; } AIstate = AIWanderState.LookingTrucks; lastState = AIWanderState.None; changedState = true; if (AIstate == AIWanderState.LookingTrucks && !LookingTrucks) { AIstate = AIWanderState.LookingPoint; changedState = false; if (AIstate == AIWanderState.LookingPoint && !LookingPoints) { changedState = true; AIstate = AIWanderState.WalkingTowards; } } } }
/** * Start should be used to create any states that you want the StateMachine * to run. The states will control the AIs behavior, then ideally all * you have to do is update the machine forever. */ void Start() { //Random.InitState((int)(Time.realtimeSinceStartup * 1000)); machine = new AIStateMachine(player, gameObject); IState wanderState = new AIWanderState(machine); IState chaseState = new AIChaseState(machine); machine.SetInitialState(wanderState); machine.AddTransition(wanderState, chaseState); machine.AddTransition(chaseState, wanderState); }
void newRandomState() { int curr = array.Count; int max = Enum.GetValues(typeof(AIWanderState)).Length; //int random = 0; //bool correctPick = false; if (curr > 1) { do { AIstate = array[UnityEngine.Random.Range(0, array.Count)]; } while (lastState == AIstate); //AIstate = array.FindAll(x => array[array.RandomIndex()] != lastState)[0]; lastState = AIstate; /* * do * { * random = UnityEngine.Random.Range(1, max); * AIstate = (AIWanderState)random; * correctPick = true; * * if (AIstate == AIWanderState.LookingPoint && !LookingPoints) correctPick = false; * if (AIstate == AIWanderState.LookingTrucks && !LookingTrucks) correctPick = false; * if (AIstate == AIWanderState.WalkingTowards && !WalkTowards) correctPick = false; * * * } while (AIstate == lastState || correctPick == false); */ } else { if (curr == 1) { AIstate = array[0]; } if (curr == 0) { AIstate = AIWanderState.LookingTrucks; } } changedState = true; //if (AIstate == AIWanderState.None) AIstate = AIWanderState.LookingTrucks; }