Объявление
public static int RaycastNonAlloc(Vector2 origin, Vector2 direction, RaycastHit2D[] results, float distance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, float minDepth = -Mathf.Infinity, float maxDepth = Mathf.Infinity);Параметры
minDepth | Включайте только объекты с координатой Z (глубиной) больше или равной этому значению. |
maxDepth | Включайте только объекты с координатой Z (глубиной) меньше или равной этому значению. |
origin | Точка в 2D-пространстве, где начинается луч. |
direction | Вектор, представляющий направление луча. |
results | Массив для получения результатов. |
distance | Максимальное расстояние, на которое можно бросить луч. |
layerMask | Фильтр для проверки объектов только на определенных слоях. |
Возвращает
int Возвращает количество результатов, помещенных в массив results
.
Описание
Направляет луч в сцену. Примечание. Этот метод будет объявлен устаревшим в будущих сборках, и вместо него рекомендуется использовать Raycast.
Эта функция аналогична функции RaycastAll, за исключением того, что результаты возвращаются в предоставленном массиве. Целочисленное возвращаемое значение — это количество объектов, пересекающих линию (возможно, ноль), но размер массива результатов не будет изменен, если он не содержит достаточного количества элементов для отчета обо всех результатах. Значение этого заключается в том, что для результатов не выделяется память, поэтому производительность сборки мусора повышается при частом выполнении raycast.
Кроме того, это также обнаружит коллайдер(ы) в начале луча. В этом случае луч начинается внутри коллайдера и не пересекает поверхность коллайдера. Это означает, что нормаль столкновения не может быть вычислена, и в этом случае возвращаемая нормаль столкновения устанавливается на обратную проверяемому вектору луча. Это легко обнаружить, поскольку такие результаты всегда имеют долю RaycastHit2D, равную нулю.
Смотрите так же: LayerMask class, RaycastHit2D class, Raycast, Linecast, DefaultRaycastLayers, IgnoreRaycastLayer, raycastsHitTriggers.