private GameObject GetClosestTargetableEnemy(GameObject[] enemies)
    {
        if (!enemies.Any())
        {
            return(null);
        }

        List <EnemyDist> possibleTargets = new List <EnemyDist>();

        foreach (GameObject enemy in enemies)
        {
            float distance = Vector3.Distance(transform.position, enemy.transform.position);
            if (distance <= PlayerManager.Instance.PlayerData.aimDistance.levelValues[PlayerManager.Instance.CurrentUpgradeLevels.aimDistance])
            {
                EnemyDist enemyDist = new EnemyDist();
                enemyDist.enemy = enemy;
                enemyDist.distanceFromPlayer = distance;
                possibleTargets.Add(enemyDist);
            }
        }

        if (!possibleTargets.Any())
        {
            return(null);
        }

        return(possibleTargets.OrderBy(e => e.distanceFromPlayer).First().enemy);
    }
    private GameObject GetClosestNonVisibleEnemy(GameObject[] enemies)
    {
        if (!enemies.Any())
        {
            return(null);
        }

        List <EnemyDist> possibleTargets = new List <EnemyDist>();

        foreach (GameObject enemy in enemies)
        {
            if (enemy.GetComponentInChildren <Renderer>().isVisible)
            {
                return(null);
            }
            else
            {
                float     distance  = Vector3.Distance(transform.position, enemy.transform.position);
                EnemyDist enemyDist = new EnemyDist();
                enemyDist.enemy = enemy;
                enemyDist.distanceFromPlayer = distance;
                possibleTargets.Add(enemyDist);
            }
        }

        if (!possibleTargets.Any())
        {
            return(null);
        }

        return(possibleTargets.OrderBy(e => e.distanceFromPlayer).First().enemy);
    }
    private Transform GetClosestTargetableEnemy(GameObject[] enemies)
    {
        if (!enemies.Any())
        {
            return(null);
        }

        List <EnemyDist> possibleTargets = new List <EnemyDist>();

        foreach (GameObject enemy in enemies)
        {
            float distance = Vector3.Distance(transform.position, enemy.transform.position);
            if (distance <= aimDistance)
            {
                EnemyDist enemyDist = new EnemyDist();
                enemyDist.enemy = enemy;
                enemyDist.distanceFromProjectile = distance;
                possibleTargets.Add(enemyDist);
            }
        }

        if (!possibleTargets.Any())
        {
            return(null);
        }

        return(possibleTargets.OrderBy(e => e.distanceFromProjectile).First().enemy.transform);
    }