Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Physics.RaycastNonAlloc

Объявление

public static int RaycastNonAlloc(Ray ray, RaycastHit[] results, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);

Параметры

ray Начальная точка и направление луча.
results Буфер для хранения обращений.
maxDistance Максимальное расстояние, на которое может попасть rayhit от начала луча.
layerMask Маска слоя, используемая для выборочного игнорирования коллайдеров при создании луча.
queryTriggerInteraction Указывает, должен ли этот запрос вызывать триггеры.

Возвращает

int Количество обращений, сохраненных в буфере results.

Описание

Пропустить луч через сцену и сохранить попадания в буфер.

Аналогичен Physics.RaycastAll, но не создает мусора.

Запрос raycast завершается, когда больше нет совпадений и/или буфер результатов заполнен. Порядок результатов не определен. Когда возвращается полный буфер, не гарантируется, что результаты будут ближайшими совпадениями, и возвращается длина буфера. Если передан нулевой буфер, результаты не возвращаются и не выдаются ошибки или исключения.


Объявление

public static int RaycastNonAlloc(Vector3 origin, Vector3 direction, RaycastHit[] results, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);

Параметры

origin Начальная точка и направление луча.
results Буфер для хранения обращений.
direction Направление луча.
maxDistance Максимальное расстояние, на которое может попасть rayhit от начала луча.
queryTriggerInteraction Указывает, должен ли этот запрос вызывать триггеры.
layerMask Маска слоя, используемая для выборочного игнорирования коллайдеров при создании луча.

Возвращает

int Количество обращений, сохраненных в буфере results.

Описание

Пропустить луч через сцену и сохранить попадания в буфер.

using UnityEngine; public class ExampleClass : MonoBehaviour { // Размер массива определяет, сколько рейкастов будет происходить RaycastHit[] m_Results = new RaycastHit[5]; // See Order of Execution for Event Functions for information on FixedUpdate() and Update() related to physics queries void FixedUpdate() { // Установить маску слоя на все слои var layerMask = ~0; int hits = Physics.RaycastNonAlloc(transform.position, transform.forward, m_Results, Mathf.Infinity, layerMask); for (int i = 0; i < hits; i++) { Debug.Log("Hit " + m_Results[i].collider.gameObject.name); } if (hits == 0) { Debug.Log("Did not hit"); } } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3