void Update()
    {
        timePassed += Time.deltaTime;

        if (target == null)
        {
            // Detect colliders inside the range
            Collider[] insideColliders = Physics.OverlapSphere(transform.position, range);
            foreach (Collider col in insideColliders)
            {
                Contagion script = col.transform.gameObject.GetComponent <Contagion>();
                if (script && !script.IsMasked())
                {
                    target = col;
                    break;
                }
            }
        }

        if (target != null)
        {
            //Debug.Log(target.gameObject.name);
            // If the character has a mask or is too far, return
            Contagion script = target.transform.gameObject.GetComponent <Contagion>();
            if ((script && script.IsMasked()) || Vector3.Distance(target.transform.position, transform.position) > range)
            {
                target = null;
                return;
            }
            else
            {
                // Rotation
                Vector3 targetDirection = target.transform.position - transform.position;
                targetDirection.y = 0;
                Quaternion rotation = Quaternion.LookRotation(targetDirection);
                transform.rotation = Quaternion.Slerp(transform.rotation, rotation, rotationSpeed * Time.deltaTime);

                // Fire
                if (timePassed > timeBetweenFire)
                {
                    Fire();
                    timePassed = 0.0f;
                }
            }
        }
        if (shoot >= nbOfMaskToShoot)
        {
            Destroy(gameObject);
        }
    }