bool DetectPlayer() { //Checking if player is in range. var player = Physics.OverlapSphere(transform.position, SightDistance).FirstOrDefault(c => c.CompareTag("Player")); if (player == null) { return(false); } //Checking if there is a line of sight on the player. RaycastHit hit; Vector3 direction = (player.transform.position - transform.position).normalized; if (!Physics.Raycast(transform.position, direction, out hit, SightDistance)) { return(false); } if (!hit.transform.CompareTag("Player")) { return(false); } if (_haltCooldown <= 0f) { _aiControl.PlaySighted(); _haltCooldown = HaltCoolDown; } Target = player.transform; return(true); }