Example #1
0
    public void Attack()
    {
        //To-Do
        Debug.Log("attacking");
        defenceLock        = false;
        attackTimeCounter += Time.deltaTime;
        if (attackTimeCounter > attackTime)
        {
            previousState = enemyBrain.GetCurrentState();
            enemyBrain.PopState();
            enemyBrain.PushState(EnumsScript.Enemy_State.NO_ACTION);
            attackTimeCounter = 0;
        }

        /*
         * if (Vector3.Distance(transform.position, target.position) < distance)
         * {
         *  //transform.Translate(target.position);
         * }
         * else if (Vector3.Distance(transform.position, target.position) > distance)
         * {
         *  previousState = enemyBrain.GetCurrentState();
         *  enemyBrain.PopState();
         *  enemyBrain.PushState(EnumsScript.Enemy_State.SEEK);
         * }
         */
    }
Example #2
0
 public void UseAbility()
 {
     Debug.Log("Use ability");
     //To-Do
     previousState = enemyBrain.GetCurrentState();
     enemyBrain.PopState();
     enemyBrain.PushState(EnumsScript.Enemy_State.NO_ACTION);
 }
Example #3
0
 // Update is called once per frame
 void Update()
 {
     checkDistance = Vector3.Distance(transform.position, target.position);
     currentState  = enemyBrain.GetCurrentState();
     if (brainAction)
     {
         TakeAction();
         enemyBrain.GetCurrentState();
     }
 }
Example #4
0
    //first execution when the fight starts
    public void AtStartFight()
    {
        Debug.Log("Initial State");
        //To-Do
        //target = allTargets[Random.Range(0, allTargets.Length)].transform;
        //enable animations when the animator is implemented

        /*if (myAnimator.GetCurrentAnimatorStateInfo(0).IsName("StartAnimation"))
         * {
         *  enemyBrain.PopState();
         *  enemyBrain.PushState(EnumsScript.Enemy_State.SEEK);
         * }*/
        previousState = enemyBrain.GetCurrentState();
        enemyBrain.PopState();
        enemyBrain.PushState(EnumsScript.Enemy_State.SEEK);
    }
Example #5
0
 public void Defend()
 {
     Debug.Log("Defend");
     defenceLock        = false;
     defendTimeCounter += Time.deltaTime;
     if (defendTimeCounter > defendTime)
     {
         defendTimeCounter = 0;
         previousState     = enemyBrain.GetCurrentState();
         enemyBrain.PopState();
         if (currentState != EnumsScript.Enemy_State.SEEK)
         {
             enemyBrain.PushState(EnumsScript.Enemy_State.SEEK);
         }
     }
 }
Example #6
0
    //Seek the target for pushing other states like attacking
    public void SeekTarget()
    {
        Debug.Log("seeking target");

        //To-Do
        //add animations
        if (hasAbility)
        {
            attackTimeCounter += Time.deltaTime;
            if (attackTimeCounter > attackTime)
            {
                attackTimeCounter = 0;
                previousState     = enemyBrain.GetCurrentState();
                enemyBrain.PopState();
                enemyBrain.PushState(EnumsScript.Enemy_State.ABILITY);
            }
        }

        //if(the enemy is far, then approach
        if ((Vector3.Distance(transform.position, target.position) > distance && playerStateReference != EnumsScript.Player_State.ATTACK) ||
            (Vector3.Distance(transform.position, target.position) > distance && defenceLock))
        {
            transform.position = Vector3.MoveTowards(transform.position, target.position, velocity * Time.deltaTime);
        }
        //if the enemy isn't in defend distance and the player is attacking, then block defend condition and just ram to the player
        else if (Vector3.Distance(transform.position, target.position) > defenceDistance &&
                 playerStateReference == EnumsScript.Player_State.ATTACK && !defenceLock)
        {
            transform.position = Vector3.MoveTowards(transform.position, target.position, velocity * Time.deltaTime);
            defenceLock        = true;
        }
        //if the enemy isn't close enough for attacking and the player is attacking and the enemy is in the determined defend range, then start defending
        else if (Vector3.Distance(transform.position, target.position) > distance &&
                 Vector3.Distance(transform.position, target.position) < defenceDistance &&
                 playerStateReference == EnumsScript.Player_State.ATTACK)
        {
            enemyBrain.PushState(EnumsScript.Enemy_State.DEFEND);
        }
        //if the player is in attack range, then attack
        else if (Vector3.Distance(transform.position, target.position) < distance)
        {
            previousState = enemyBrain.GetCurrentState();
            enemyBrain.PopState();
            enemyBrain.PushState(EnumsScript.Enemy_State.ATTACK);
        }
    }
Example #7
0
 public void NoAction()
 {
     Debug.Log("No action");
     noActionTimeCount += Time.deltaTime;
     if (noActionTimeCount > noActionTime)
     {
         noActionTimeCount = 0;
         previousState     = enemyBrain.GetCurrentState();
         enemyBrain.PopState();
         if (playerStateReference == EnumsScript.Player_State.ATTACK)
         {
             enemyBrain.PushState(EnumsScript.Enemy_State.DEFEND);
         }
         else
         {
             enemyBrain.PushState(EnumsScript.Enemy_State.SEEK);
         }
     }
 }
Example #8
0
 public void PushState(EnumsScript.Enemy_State newState)
 {
     states.Push(newState);
 }