bool CanSeePlayer()
{
float distance = Vector3.Distance(transform.position, playerTransform.position);
if (distance <= viewDistance)
{
Vector3 directionToPlayer = (playerTransform.position - transform.position).normalized;
float angle = Vector3.Angle(transform.forward, directionToPlayer);
if (angle < viewAngle / 2f)
{
RaycastHit hit;
Vector3 startPos = transform.position + Vector3.up;
Vector3 targetPos = playerTransform.position + Vector3.up;
if (Physics.Raycast(startPos, (targetPos - startPos).normalized, out hit, viewDistance))
{
if (hit.transform.CompareTag("Player"))
{
return true;
}
}
}
}
return false;
}
}