Raycast es una herramienta fundamental en Unity que permite detectar colisiones y objetos en línea recta desde un punto en el espacio. Se usa mucho para disparos, interacciones o detección de obstáculos en videojuegos 3D y 2D.
En Unity, un Raycast es una función que lanza un rayo invisible desde un punto en una dirección específica y detecta si colisiona con algún objeto en su recorrido. Esto permite, por ejemplo, saber si un jugador apunta a un objeto o si hay un obstáculo delante.
La función más usada es:
Physics.Raycast()
Se utiliza en juegos 3D junto al sistema de físicas de Unity.
Physics.Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo, float maxDistance)
Parámetro | Tipo | Descripción |
---|---|---|
origin
|
Vector3 | Punto de inicio del rayo. |
direction
|
Vector3 | Dirección en la que se lanza el rayo. |
hitInfo
|
RaycastHit | Guarda información del objeto impactado (opcional). |
maxDistance
|
float | Distancia máxima que recorrerá el rayo. |
Nota: Para usarlo en 2D se emplea Physics2D.Raycast()
.
Ejemplo básico en 3D:
void Update()
{
RaycastHit hit;
if (Physics.Raycast(transform.position, transform.forward, out hit, 100f))
{
Debug.Log("Objeto impactado: " + hit.collider.name);
}
}
Ejemplo en 2D:
void Update()
{
RaycastHit2D hit = Physics2D.Raycast(transform.position, Vector2.right, 10f);
if (hit.collider != null)
{
Debug.Log("Objeto impactado: " + hit.collider.name);
}
}
Jorge García
Fullstack developer