PhysicsScene.Raycast
Declaration
public bool Raycast(Vector3 origin, Vector3 direction, float maxDistance = Mathf.Infinity, int layerMask = Physics.DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);Параметры
| Параметр | Описание |
|---|---|
| происхождение | Начальная точка луча в мировых координатах. |
| направление | Направление луча. |
| maxDistance | Максимальное расстояние, на котором луч должен проверять столкновения. |
| layerMask | Маска слоя Маска слоя, которая используется для выборочного фильтрования коллайдеров, рассматриваемых при создании луча. |
| queryTriggerInteraction | Указывает, должен ли этот запрос вызывать триггеры. |
Возвращаемое значение
логическое True, если луч пересекается с Collider, в противном случае false.
Описание
Отправляет из точки originв направлении directionлуч длиной maxDistanceна все коллайдеры в Scene.
Вы можете по желанию предоставить LayerMask, чтобы отфильтровать все Коллайдеры, с которыми вы не заинтересованы в создании столкновений. queryTriggerInteraction позволяет вам управлять тем, генерируют ли коллайдеры Trigger попадание, или использовать глобальное Physics.queriesHitTriggers установка.
Этот пример создает простой Raycast, проецирующий вперед от позиции текущего положения объекта, расширяя на 10 единиц.
using UnityEngine;
public class Example : MonoBehaviour { void FixedUpdate() { // Get the current PhysicsScene PhysicsScene physicsScene = gameObject.scene.GetPhysicsScene();
// Define ray direction and origin Vector3 origin = transform.position; Vector3 direction = transform.TransformDirection(Vector3.forward);
// Max ray distance float maxDistance = 10f;
// RaycastAll in the current physics scene RaycastHit[] hits = new RaycastHit[10]; // Pre-allocate for performance int hitCount = physicsScene.Raycast(origin, direction, hits, maxDistance);
if (hitCount > 0) { Debug.Log($"Detected {hitCount} hit(s) in front of the object:"); for (int i = 0; i < hitCount; i++) { Debug.Log($"Hit {i}: {hits[i].collider.name} at {hits[i].point}"); } } } }
Declaration
public bool Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo, float maxDistance = Mathf.Infinity, int layerMask = Physics.DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);Параметры
| Параметр | Описание |
|---|---|
| происхождение | Начальная точка луча в мировых координатах. |
| направление | Направление луча. |
| hitInfo | Если вернётся true, hitInfo будет содержать больше информации о месте удара коллайдера. (Дополнительные ресурсы: RaycastHit). |
| maxDistance | Максимальное расстояние, на котором луч должен проверять столкновения. |
| layerMask | Маска слоя Маска слоя, которая используется для выборочного фильтрования коллайдеров, рассматриваемых при создании луча. |
| queryTriggerInteraction | Указывает, должен ли этот запрос вызывать триггеры. |
Возвращаемое значение
логическое True, если луч пересекается с Collider, в противном случае false.
Описание
Отправляет из точки originв направлении directionлуч длиной maxDistanceна все коллайдеры в Scene.
Этот метод не генерирует мусора.
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); } }
Declaration
public int Raycast(Vector3 origin, Vector3 direction, RaycastHit[] raycastHits, float maxDistance = Mathf.Infinity, int layerMask = Physics.DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);Параметры
| Параметр | Описание |
|---|---|
| происхождение | Начальная точка и направление луча. |
| направление | Направление луча. |
| raycastHits | Буфер для хранения запросов. |
| maxDistance | Максимальное расстояние, на котором может находиться удар по лучу от начала луча. |
| layerMask | Маска слоя Маска слоя, которая используется для выборочного фильтрования коллайдеров, рассматриваемых при создании луча. |
| queryTriggerInteraction | Количество запросов, хранящихся в буфере results. |
Возвращаемое значение
инт True, если луч пересекается с Collider, в противном случае false.
Описание
Отправляет из точки originв направлении directionлуч длиной maxDistanceна все коллайдеры в Scene.
Этот метод не генерирует мусора.