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); }