Collider2D.Raycast
Declaration
public int Raycast(Vector2 direction, RaycastHit2D[] results, float distance = Mathf.Infinity, int layerMask = Physics2D.AllLayers, float minDepth = -Mathf.Infinity, float maxDepth = Mathf.Infinity);public int Raycast(Vector2 direction, ContactFilter2D contactFilter, RaycastHit2D[] results, float distance = Mathf.Infinity);Параметры
| Параметр | Описание |
|---|---|
| направление | Вектор, представляющий направление луча. |
| результаты | Массив для получения результатов. |
| расстояние | Максимальное расстояние, на которое может быть брошен луч. |
| layerMask | Фильтр для проверки объектов только на определенных слоях. |
| minDepth | Включить только объекты с координатой Z (глубиной) большей, чем это значение. |
| maxDepth | Включить только объекты с координатой Z (глубиной) меньше этого значения. |
| contactFilter | Результаты фильтрации, определенные фильтром контакта. |
Возвращаемое значение
инт Количество возвращенных результатов.
Описание
Отправляет луч в Scene, который начинается в позиции Collider и игнорирует сам Collider.
Возвращаемое целое число — это число объектов, пересекающих луч (возможно, нулевой), но массив результатов не будет изменен, если он не содержит достаточно элементов, чтобы отобразить все результаты. Значение этого заключается в том, что для результатов не выделяется памяти, и поэтому производительность сбора мусора улучшается, когда часто выполняются трансляции луча.
Перегрузки этой функции, которые используют contactFilter фильтрует результаты по параметрам, доступным в ContactFilter2D.
Кроме того, это также обнаружит другие Collider(s) в начале луча. В этом случае луч начинается внутри Collider и не пересекает поверхность Collider. Это означает, что нормаль столкновения не может быть рассчитана, в этом случае возвращаемая нормаль столкновения устанавливается на обратную величину тестируемого вектора луча. Это легко обнаружить, поскольку такие результаты всегда находятся в RaycastHit2D доле от нуля.
NOTE: Все результаты отсортированы в порядке возрастания расстояния i.e. первый результат является ближайшим.
Дополнительные ресурсы: LayerMask class, RaycastHit2D класс, [[Physics2D::AllLayers]], [[Physics2D::IgnoreRaycastLayer]], [[Physics2D::raycastsHitTriggers]].
Declaration
public int Raycast(Vector2 direction, ContactFilter2D contactFilter, List<RaycastHit2D> results, float distance = Mathf.Infinity);Параметры
| Параметр | Описание |
|---|---|
| направление | Вектор, представляющий направление луча. |
| contactFilter | Результаты фильтрации, определенные фильтром контакта. |
| результаты | Список для получения результатов. |
| расстояние | Максимальное расстояние, на которое может быть брошен луч. |
Возвращаемое значение
инт Количество возвращенных результатов.
Описание
Отправляет луч в Scene, который начинается в позиции Collider и игнорирует сам Collider.
Возвращаемое целое число — это число коллайдеров, которые пересекают луч (возможно, нулевой). Список результатов будет изменен, если в нем не будет достаточно элементов для отображения всех результатов. Это предотвращает выделение памяти для результатов, когда results список не нуждается в изменении размера, и улучшает производительность сбора мусора, когда запрос выполняется часто.
Кроме того, это также обнаружит другие Collider(s) в начале луча. В этом случае луч начинается внутри Collider и не пересекает поверхность Collider. Это означает, что нормаль столкновения не может быть рассчитана, в этом случае возвращаемая нормаль столкновения устанавливается на обратную величину тестируемого вектора луча. Это легко обнаружить, поскольку такие результаты всегда находятся в RaycastHit2D доле от нуля.
NOTE: Все результаты отсортированы в порядке возрастания расстояния i.e. первый результат является ближайшим.
Дополнительные ресурсы: RaycastHit2D class.