origin | El punto inicial del rayo en coordenadas del mundo. |
direction | La dirección del rayo. |
maxDistance | La distancia máxima que el rayo debería revisar por colisiones. |
layerMask | Un Layer mask que es utilizado para ignorar selectivamente los Colliders cuando se emita un rayo. |
queryTriggerInteraction | Especifica si esta consulta debería golpear Triggers. |
bool True si el rayo intersecta con un Collider, de lo contrario false.
Emite un rayo, desde un punto origin
, en dirección direction
, de longitud maxDistance
, contra todos los colliders en la escena.
Usted puede opcionalmente proporcionar una LayerMask, para filtrar cualquier otro Collider que no le interese que genere colisiones.
Especificar queryTriggerInteraction
le permite a usted controlar si o no los Trigger colliders generan un hit (toque/golpe), o si se utiliza el ajuste global Physics.queriesHitTriggers.
Este ejemplo crea un Raycast simple, que proyecta hacia adelante desde la posición actual del objeto y se extiende 10 unidades.
using UnityEngine;
public class ExampleClass : MonoBehaviour { // C# example. void Update() { // Bit shift the index of the layer (8) to get a bit mask int layerMask = 1 << 8;
// This would cast rays only against colliders in layer 8. // But instead we want to collide against everything except layer 8. The ~ operator does this, it inverts a bitmask. layerMask = ~layerMask;
RaycastHit hit; // Does the ray intersect any objects excluding the player layer if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out hit, Mathf.Infinity, layerMask)) { Debug.DrawRay(transform.position, transform.TransformDirection(Vector3.forward) * hit.distance, Color.yellow); Debug.Log("Did Hit"); } else { Debug.DrawRay(transform.position, transform.TransformDirection(Vector3.forward) * 1000, Color.white); Debug.Log("Did not Hit"); } } }
using UnityEngine;
public class ExampleClass : MonoBehaviour { void FixedUpdate() { Vector3 fwd = transform.TransformDirection(Vector3.forward);
if (Physics.Raycast(transform.position, fwd, 10)) print("There is something in front of the object!"); } }
Notas: Los Raycasts no detectarán Colliders que tengan el origen del Raycast dentro del Collider.
origin | El punto inicial del rayo en coordenadas del mundo. |
direction | La dirección del rayo. |
hitInfo | If true is returned, hitInfo will contain more information about where the collider was hit. (See Also: RaycastHit). |
maxDistance | La distancia máxima que el rayo debería revisar por colisiones. |
layerMask | Un Layer mask que es utilizado para ignorar colliders selectivamente cuando se emita un rayo. |
queryTriggerInteraction | Especifica si esta consulta debería golpear Triggers. |
bool True cuando el rayo intersecta cualquier collider, de lo contrario false.
Emite un rayo contra todos los colliders en la escena y devuelve información detallada sobre qué fue golpeado.
Este ejemplo reporta la distancia entre el objeto actual y el Collider reportado:
using UnityEngine;
public class RaycastExample : MonoBehaviour { void FixedUpdate() { RaycastHit hit;
if (Physics.Raycast(transform.position, -Vector3.up, out hit)) print("Found an object - distance: " + hit.distance); } }
Este ejemplo re-introduce el parámetro maxDistance
para limitar qué tan lejos para emitir el Ray (rayo):
using UnityEngine;
public class RaycastExample : MonoBehaviour { void FixedUpdate() { RaycastHit hit;
if (Physics.Raycast(transform.position, -Vector3.up, out hit, 100.0f)) print("Found an object - distance: " + hit.distance); } }
ray | El punto inicial y la dirección del rayo. |
maxDistance | La distancia máxima que el rayo debería revisar por colisiones. |
layerMask | Un Layer mask que es utilizado para ignorar colliders selectivamente cuando se emita un rayo. |
queryTriggerInteraction | Especifica si esta consulta debería golpear Triggers. |
bool True cuando el rayo intersecta cualquier collider, de lo contrario false.
Lo mismo que arriba utilizando ray.origin
y ray.direction
en vez de origin
y direction
.
using UnityEngine;
public class ExampleClass : MonoBehaviour { void Update() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, 100)) print("Hit something!"); } }
ray | El punto inicial y la dirección del rayo. |
hitInfo | If true is returned, hitInfo will contain more information about where the collider was hit. (See Also: RaycastHit). |
maxDistance | La distancia máxima que el rayo debería revisar por colisiones. |
layerMask | Un Layer mask que es utilizado para ignorar colliders selectivamente cuando se emita un rayo. |
queryTriggerInteraction | Especifica si esta consulta debería golpear Triggers. |
bool True cuando el rayo intersecta cualquier collider, de lo contrario false.
Lo mismo que arriba utilizando ray.origin
y ray.direction
en vez de origin
y direction
.
Este ejemplo dibuja una linea a lo largo de la longitud del Rayo cuando una colisión se detecta:
using UnityEngine;
public class ExampleClass : MonoBehaviour { void Update() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit;
if (Physics.Raycast(ray, out hit, 100)) Debug.DrawLine(ray.origin, hit.point); } }