예제 #1
0
    // Shoot a volley towards the player
    void Shooting()
    {
        LookAtPlayer();

        if (numberOfShots > shotsTaken)
        {
            if (!waiting)
            {
                waiting  = true;
                waitTime = Time.time + timeBetweenShots;
            }

            if (Time.time > waitTime)
            {
                waiting = false;
                shotsTaken++;

                weapon.GetComponent <WeaponBehaviour>().Fire();
            }
        }
        else
        {
            shotsTaken  = 0;
            engageState = (EngageState)Random.Range(0, (int)EngageState.Moving - 1);
        }
    }
예제 #2
0
 void Awake()
 {
     engageState  = new EngageState(this);
     alertState   = new AlertState(this);
     patrolState  = new PatrolState(this);
     navMeshAgent = GetComponent <UnityEngine.AI.NavMeshAgent> ();
     currentState = patrolState;
 }
예제 #3
0
    protected void Awake()
    {
        idleState = new IdleState(this);
        huntState = new HuntState(this);
        fearState = new FearState(this);
        engageState = new EngageState(this);
        counterState = new CounterState(this);

        nav = GetComponent<NavMeshAgent> ();
    }
예제 #4
0
    // Use this for initialization
    void Start()
    {
        player         = GameObject.FindGameObjectWithTag("Player");
        gameController = GameObject.FindGameObjectWithTag("GameController").GetComponent <GameController>();

        topState    = TopState.Engage;
        engageState = EngageState.Moving;
        agent       = GetComponentInParent <NavMeshAgent>();
        //agent.SetDestination(target.transform.position);
    }
예제 #5
0
    void Cover()
    {
        LookAtPlayer();

        if (target.GetComponent <EnemyWaypointBehaviour>().cover)
        {
            // Get into cover position and wait a certain amount of time
            engageState = (EngageState)Random.Range(0, (int)EngageState.Moving - 1);
        }
        else
        {
            engageState = (EngageState)Random.Range(0, (int)EngageState.Moving - 1);
        }
    }
예제 #6
0
    private void Awake()
    {
        alertState    = new AlertState(this);
        coverState    = new CoverState(this);
        checkState    = new CheckState(this);
        engageState   = new EngageState(this);
        examineState  = new ExamineState(this);
        flankState    = new FlankState(this);
        patrolState   = new PatrolState(this);
        suppressState = new SuppressState(this);

        navMeshAgent = GetComponent <NavMeshAgent>();

        enemyHealth = GetComponent <EnemyHealth>();
    }
예제 #7
0
 void Moving()
 {
     if (agent.enabled)
     {
         if (!agent.pathPending && agent.remainingDistance == 0)
         {
             engageState = (EngageState)Random.Range(0, (int)EngageState.Moving - 1);
         }
     }
     // Fix for the navmesh spawn error
     else
     {
         agent.enabled = true;
         agent.SetDestination(target.transform.position);
     }
 }
예제 #8
0
    void Waiting()
    {
        if (!waiting)
        {
            waiting  = true;
            waitTime = Time.time + waitCooldown;
        }

        LookAtPlayer();

        //StartCoroutine(Wait(3f));
        if (Time.time > waitTime)
        {
            waiting     = false;
            engageState = (EngageState)Random.Range(0, (int)EngageState.Moving - 1);
        }
    }
예제 #9
0
    void Move()
    {
        if (target == null || target.GetComponent <EnemyWaypointBehaviour>().waypoints.Length == 0)
        {
            engageState = (EngageState)Random.Range(0, (int)EngageState.Moving - 1);
        }
        else
        {
            tempWaypoint = target.GetComponent <EnemyWaypointBehaviour>().waypoints[Random.Range(0, target.GetComponent <EnemyWaypointBehaviour>().waypoints.Length)];
            if (!tempWaypoint.GetComponent <EnemyWaypointBehaviour>().occupied)
            {
                tempWaypoint.GetComponent <EnemyWaypointBehaviour>().occupied = true;
                target.GetComponent <EnemyWaypointBehaviour>().occupied       = false;

                target = tempWaypoint;
                agent.SetDestination(target.transform.position);
                engageState = EngageState.Moving;
            }
            else
            {
                engageState = (EngageState)Random.Range(0, (int)EngageState.Moving - 1);
            }
        }
    }