Exemple #1
0
    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;
                }
            }
        }
    }
Exemple #2
0
    /**
     * 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);
    }
Exemple #3
0
    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;
    }