Unity 6.3
0 онлайн 82 гостей 3 в системе
Вход

PhysicsScene2D.Raycast

Declaration

public RaycastHit2D Raycast(Vector2 origin, Vector2 direction, float distance, int layerMask = Physics2D.DefaultRaycastLayers);
public RaycastHit2D Raycast(Vector2 origin, Vector2 direction, float distance, ContactFilter2D contactFilter);

Параметры

Параметр Описание
происхождение Точка в пространстве 2D, откуда исходит луч.
направление Вектор, представляющий направление луча.
расстояние Максимальное расстояние, на которое может быть брошен луч.
layerMask Фильтр используется для обнаружения коллайдеров только на определенных слоях.
contactFilter Контактный фильтр используется для фильтрации результатов по-разному, например, по маске слоя и глубине Z или нормальному углу.

Возвращаемое значение

RaycastHit2D Возвращаются результаты отливки.

Описание

Пролетает луч через коллайдеры в PhysicsScene2D, возвращая только первое пересечение.

Рейкаст концептуально напоминает лазерный луч, выпущенный из точки в пространстве в заданном направлении. Любой объект, соприкасающийся с лучом, можно обнаружить и включить в результаты. Рейкасты полезны для определения прямой видимости, целей, поражённых выстрелом, и многих других задач игрового процесса.

Функция возвращает объект RaycastHit2D со ссылкой на Collider2D, в который попал луч (если попадания не было, свойство collider результата равно NULL).

Параметр layerMask позволяет выборочно обнаруживать объекты только на определённых слоях (например, выполнять проверку только для вражеских персонажей). Перегрузки этого метода, использующие contactFilter, позволяют фильтровать результаты с помощью параметров, доступных в ContactFilter2D.

Кроме того, обнаруживаются коллайдеры, расположенные в начальной точке луча. В таком случае луч начинается внутри коллайдера и не пересекает его поверхность. Поэтому нормаль столкновения невозможно вычислить и возвращаемая нормаль задаётся равной вектору, противоположному проверяемому вектору луча. Такие результаты легко определить: их значение fraction объекта RaycastHit2D всегда равно нулю.

ПРИМЕЧАНИЕ: Все результаты отсортированы по возрастанию расстояния, то есть первым идёт ближайший результат.

Дополнительные ресурсы: PhysicsScene2D, RaycastHit2D, LayerMask, Physics2D.DefaultRaycastLayers, Physics2D.IgnoreRaycastLayer, Physics2D.queriesHitTriggers и Collider2D.Raycast.

Declaration

public int Raycast(Vector2 origin, Vector2 direction, float distance, RaycastHit2D[] results, int layerMask = Physics2D.DefaultRaycastLayers);
public int Raycast(Vector2 origin, Vector2 direction, float distance, ContactFilter2D contactFilter, RaycastHit2D[] results);

Параметры

Параметр Описание
происхождение Точка в пространстве 2D, откуда исходит луч.
направление Вектор, представляющий направление луча.
расстояние Максимальное расстояние, на которое может быть брошен луч.
layerMask Фильтр используется для обнаружения коллайдеров только на определенных слоях.
contactFilter Контактный фильтр используется для фильтрации результатов по-разному, например, по маске слоя и глубине Z или нормальному углу.
результаты Массив для получения результатов. Размер массива определяет максимальное количество результатов, которые могут быть возвращены.

Возвращаемое значение

инт Возвращает число результатов, помещенных в массив results.

Описание

Бросает луч на коллайдеры PhysicsScene2D, возвращая все пересечения.

Трассировку лучом можно представить как лазерный луч, выпущенный из точки в пространстве в определённом направлении. Любой объект, соприкасающийся с лучом, можно обнаружить и получить сведения о нём. Трассировка лучом полезна для определения прямой видимости, целей, поражённых выстрелами, и во многих других игровых задачах.

Эта функция возвращает все Collider2D, пересекающие луч, записывая результаты в предоставленный массив. Возвращаемое целое число равно количеству объектов, пересекающих линию (возможно, нулю), однако массив результатов не увеличивается, если в нём недостаточно элементов для всех результатов. Благодаря этому память под результаты не выделяется, что повышает производительность сборки мусора. Если передать пустой массив, результат всегда будет нулевым.

Параметр layerMask позволяет избирательно обнаруживать объекты только на определённых слоях (например, выполнять проверку лишь для вражеских персонажей). Перегрузки этого метода, использующие contactFilter, позволяют фильтровать результаты с помощью параметров, доступных в ContactFilter2D.

Кроме того, обнаруживаются коллайдеры в начальной точке луча. В таком случае луч начинается внутри коллайдера и не пересекает его поверхность. Поэтому нормаль столкновения вычислить невозможно, и возвращаемая нормаль задаётся как вектор, обратный проверяемому вектору луча. Такие результаты легко определить: их значение fraction в RaycastHit2D всегда равно нулю.

ПРИМЕЧАНИЕ: Все результаты сортируются по возрастанию расстояния, то есть первый результат является ближайшим.

Дополнительные ресурсы: PhysicsScene2D, RaycastHit2D, LayerMask, Physics2D.DefaultRaycastLayers, Physics2D.IgnoreRaycastLayer, Physics2D.queriesHitTriggers и Collider2D.Raycast.

Declaration

public int Raycast(Vector2 origin, Vector2 direction, float distance, ContactFilter2D contactFilter, List<RaycastHit2D> results);

Параметры

Параметр Описание
происхождение Точка в пространстве 2D, откуда исходит луч.
направление Вектор, представляющий направление луча.
расстояние Максимальное расстояние, на которое может быть брошен луч.
contactFilter Контактный фильтр используется для фильтрации результатов по-разному, например, по маске слоя и глубине Z или нормальному углу.
результаты Список для получения результатов.

Возвращаемое значение

инт Возвращает число результатов, помещенных в список results.

Описание

Бросает луч на коллайдер PhysicsScene2D, возвращая все пересечения.

A рейкаст Лазерный луч концептуально похож на лазерный луч, который выстреливается из точки в пространстве в определенном направлении. Любой объект, контактирующий с лучом, может быть обнаружен и сообщен. Лазерные выстрелы полезны для определения линии обзора, целей, пораженных огнем, и для многих других целей в игре.

Целое возвращаемое значение — это число результатов, записанных в results список. Размер списка результатов будет изменен, если он не содержит достаточно элементов для отображения всех результатов. Это предотвращает выделение памяти для результатов, когда results список не нуждается в изменении размера, и улучшает производительность сбора мусора, когда запрос выполняется часто.

Результаты могут быть также отфильтрованы по contactFilter.

NOTE: Все результаты отсортированы в порядке возрастания расстояния i.e. первый результат является наиболее близким.

Дополнительные ресурсы: PhysicsScene2D и RaycastHit2D.