private void CheckAndAttackDistractor(Transform closestDistractor, float normalizedAngle) { if (_lazingAround) { StopCoroutine(_coroutine); _lazingAround = false; } LookAtTarget(closestDistractor); if (TowerControllerHelpers.IsAngleWithinToleranceLevel(normalizedAngle, attackAngleTolerance)) { _coroutine = StartCoroutine(AttackTarget(closestDistractor)); } }
private void CheckAndAttackPlayer(float normalizedAngle) { if (_lazingAround) { StopCoroutine(_coroutine); _lazingAround = false; } LookAtTarget(_player); MissionManager.instance.IncrementSpottedTimes(); if (TowerControllerHelpers.IsAngleWithinToleranceLevel(normalizedAngle, attackAngleTolerance)) { _coroutine = StartCoroutine(AttackTarget(_player)); } }
private void Update() { if (_deactivateTower) { return; } if (!_attacking) { var normalizedAngle = TowerControllerHelpers .CheckTargetInsideFOV(_player, towerTop, maxTargetRange, maxLookAngle); if (normalizedAngle != -1) { CheckAndAttackPlayer(normalizedAngle); } else { var closestDistractor = TowerControllerHelpers.GetClosestDistractor( _distactorHolder, towerTop ); normalizedAngle = TowerControllerHelpers .CheckTargetInsideFOV(closestDistractor, towerTop, maxTargetRange, maxLookAngle, false); if (normalizedAngle != -1) { CheckAndAttackDistractor(closestDistractor, normalizedAngle); } else { LazeAndLookAround(); } } } }