// -- adds mark then waits a delay time then shoots
    private IEnumerator ShootAfterDelay(CrosshairObject crossObject)
    {
        crossObject.ShowMark();
        yield return(new WaitForSeconds(timeTillShot));

        ShootObject(crossObject);
    }
    // -- actual shooting in this function
    private void ShootObject(CrosshairObject crossObject)
    {
        // -- gun animations
        animator.SetBool("isShooting", true);
        explosionAnimator.SetBool("isShooting", true);

        // -- if still there
        if (crossObject)
        {
            crossObject.TakeDamage(damage);
        }
    }
    void CrosshairReleaseAction(Collider2D[] colliders)
    {
        // -- array of enemies that is in overlap circle of crosshair
        //List<Enemy> enemies = new List<Enemy>();

        CrosshairObject firstObjectFound = null;

        for (int i = 0; i < colliders.Length; i++)
        {
            CrosshairObject crossObject = colliders[i].gameObject.GetComponent <CrosshairObject>();

            // -- if it is a crosshair object
            if (crossObject)
            {
                BreakableShield shield = crossObject.GetComponent <BreakableShield>();
                if (shield)
                {
                    // -- override first object with shield then break loop
                    firstObjectFound = shield;
                    break;
                }
            }

            // -- if you haven't got a first object set it to this one
            if (!firstObjectFound)
            {
                firstObjectFound = crossObject;
            }
        }

        if (firstObjectFound)
        {
            // -- if it is targetable and it's not already marked and you have enough shots left
            if (firstObjectFound.isTargetable() && !firstObjectFound.isMarked() && shotsLeft > 0)
            {
                StartCoroutine(ShootAfterDelay(firstObjectFound));
                shotsLeft -= 1;
                bulletCounter.SetBulletNumber(shotsLeft);
            }
        }


        // -- if shots are now zero then start timer
        if (shotsLeft == 0)
        {
            timer.StartTimer(reloadTime);
        }

        // -- move it back to start position
        crosshair.transform.position = crosshairStartPos;
    }