/// <summary> /// Creates a new instance of the configuration loader. /// </summary> public TurretConfigLoader() { // extract the bot version from bot's assembly this.BotVersion = TurretUtilities.GetBotVersion(); // set the expected config version this.ConfigVersion = 2; }
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(); } }
// Update is called once per frame void Update() { // aiming GameObject enemy = TurretUtilities.GetTargetedEnemy(gameObject, range); if (enemy != null) { Utilities.LookAt2D(gameObject.transform, enemy.transform); // shooting if (Time.time - timeOfLastShot > shotInterval) { timeOfLastShot = Time.time; GameObject bullet = Instantiate(Bullet, transform.position, transform.rotation) as GameObject; BulletControl bulletControl = bullet.GetComponent("BulletControl") as BulletControl; bulletControl.Range = range; bulletControl.Speed = bulletSpeed; bulletControl.Damage = bulletDamage; } } }