private void detectEnemies() { float range = turretStats.GetStatValue(StatType.ATTACKRANGE); List <Transform> targets = targetsDetector.GetTargets(range, enemyLayer); targets.RemoveAll((Transform enemy) => TurretUtilities.IsEnemyDying(enemy)); if (targets.Count > 0) { Transform nearestTarget = getNearestTarget(targets); target = nearestTarget; enemyCol = target.GetComponent <Collider>(); hasTarget = true; } }
void detectEnemiesOnRangeAndSelectTheNearest() { float range = turretStats.GetStatValue(StatType.ATTACKRANGE); List <Transform> targetsOnRange = detectTargets(range); targetsOnRange.RemoveAll((Transform enemy) => TurretUtilities.IsEnemyDying(enemy)); if (targetsOnRange.Count > 0) { areTargetsInRange = true; selectTheNearestEnemy(targetsOnRange); } else { areTargetsInRange = false; } }
void randomizeTargets() { clearTargets(); float range = turretStats.GetStatValue(StatType.ATTACKRANGE); int objectives = (int)turretStats.GetStatValue(StatType.OBJECTIVESTOHIT); List <Transform> targets = targetsDetector.GetTargets(range, targetLayer); areTargetsInRange = targets.Count > 0; targets.RemoveAll((Transform enemy) => TurretUtilities.IsEnemyDying(enemy)); for (int i = 0; i < objectives; i++) { if (targets.Count <= 0) { return; } selectRandomTarget(targets); } }
private void searchAnotherTarget() { transform.position = lastEnemyPos; float range = turretStats.GetStatValue(StatType.PROJECTILERANGE); List <Transform> targets = targetsDetector.GetTargets(range, enemyLayer); targets.RemoveAll((Transform enemy) => TurretUtilities.IsEnemyDying(enemy)); Transform target = getNearestTarget(targets); if (target != null) { this.target = target; enemyCol = target.GetComponent <Collider>(); lastEnemyPos = enemyCol.bounds.center; isTargetAlive = true; } else { disable(); } }