Un Raycast lanza un rayo invisible y comprueba si golpea algo.

Raycast básico

if (Physics.Raycast(
    transform.position,
    transform.forward,
    5f))
{
    Debug.Log("Golpeó algo");
}

RaycastHit

if (Physics.Raycast(
    transform.position,
    transform.forward,
    out RaycastHit hit,
    5f))
{
    Debug.Log(hit.collider.name);
}

Datos útiles

hit.point
hit.normal
hit.distance
hit.collider
hit.transform

LayerMask

[SerializeField]
private LayerMask capas;

if (Physics.Raycast(
    transform.position,
    transform.forward,
    out RaycastHit hit,
    10f,
    capas))
{
}

Visualizar

Debug.DrawRay(
    transform.position,
    transform.forward * 5f,
    Color.red
);

Usos comunes