} // update

    void Patrol()
    {
        currentPatrolTime += Time.deltaTime;
        agent.speed        = walkSpeed;

        #region Walk
        if (agent.velocity.sqrMagnitude > 0)
        {
            enemyAnim.Walk(true);
        }
        else
        {
            enemyAnim.Walk(false);
        }

        #endregion

        if (currentPatrolTime >= patrolTimer)
        {
            currentPatrolTime = 0f;
            SetNewRandomDestination();
        }

        if (Vector3.Distance(transform.position, PlayerPos.position) <= chaseDistance)
        {
            enemyBehaviour = EnemyAttackBehaviour.CHASE;
        }
        else if (Vector3.Distance(transform.position, PlayerPos.position) > chaseDistance)
        {
            enemyBehaviour = EnemyAttackBehaviour.PATROL;
        }
    }
    void Attack()
    {
        Atk = Instantiate(AttackObject, (Vector3)Rigid.position + transform.up, transform.rotation);
        EnemyAttackBehaviour a = Atk.GetComponent <EnemyAttackBehaviour>();

        a.setDamage(damage);
        a.setForce(force);
        a.setSpeed(attackSpeed);
        SoundEffectsScript.Instance.MakeEnemyAttackSound();
    }
    } // chase

    void Attack()
    {
        agent.velocity  = Vector3.zero;
        agent.isStopped = true;
        enemyAnim.Walk(false);

        attackTimer += Time.deltaTime;
        if (attackTimer > waitBeforeAttack)
        {
            transform.LookAt(PlayerPos.position);
            if (Random.Range(0, 4) > 1)
            {
                if (Random.Range(0, 3) > 1)
                {
                    enemyAnim.Punch1();
                }
                else
                {
                    if (Random.Range(0, 3) < 1)
                    {
                        enemyAnim.Punch3();
                    }
                    else
                    {
                        enemyAnim.QuakeKick();
                    }
                }
            }
            else
            {
                enemyAnim.Punch2();
            }

            attackTimer = 0f;
        }


        if (Vector3.Distance(transform.position, PlayerPos.position) > attackDistance + waitBeforeChase)
        {
            enemyBehaviour  = EnemyAttackBehaviour.CHASE;
            agent.isStopped = false;
        }
    } // attack
    void Chase()
    {
        agent.SetDestination(PlayerPos.position);
        agent.speed     = walkSpeed;
        agent.isStopped = false;
        if (Vector3.Distance(transform.position, PlayerPos.position) <= attackDistance)
        {
            enemyBehaviour = EnemyAttackBehaviour.ATTACK;
        }

        if (agent.velocity.sqrMagnitude > 0)
        {
            enemyAnim.Walk(true);
        }
        else
        {
            enemyAnim.Walk(false);
        }
    } // chase
 void Start()
 {
     enemyBehaviour = EnemyAttackBehaviour.PATROL;
 }
    private IEnumerator MoveBackToPlayer()
    {
        yield return(new WaitForSecondsRealtime(0.2f));

        enemyBehaviour = EnemyAttackBehaviour.ATTACK;
    }