protected virtual void Attack(float AttackDistance, string layerMask) { mask = LayerMask.GetMask(layerMask); var cols = Physics.OverlapSphere(transform.position, range, mask.value); float searchDistance = Mathf.Infinity; if (cols.Length > 0) { Collider currentCollider = cols[0]; foreach (Collider col in cols) { float currentDist = Vector3.Distance(transform.position, col.transform.position); if (currentDist < searchDistance) { currentCollider = col; searchDistance = currentDist; } } if (searchDistance < AttackDistance) { if (timeBetweenAtack <= 0) { try { HammerEnemy units = currentCollider.gameObject.GetComponent <HammerEnemy>(); units.GetDamage(Damage); } catch { CrossbowEnemy crossbowEnemy = currentCollider.gameObject.GetComponent <CrossbowEnemy>(); crossbowEnemy.GetDamage(Damage); } timeBetweenAtack = 2f; } else { timeBetweenAtack -= Time.deltaTime; } } } }