Загрузка данных


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;
    }
}