НИ+ ngplus.games

С# в Unity

206 слов no tags

Physics

Raycast

Способ проверить, пересекает ли воображаемый луч, начинающийся в точке, направленный в определённую сторону, какие-либо коллайдеры.

Hit - структура, содержащая информацию о пересечении луча с коллайдером.

  1. Работает только с Collider.
  2. В сандартном варианте луч не проходит сквозь коллайдеры. Соответственно, Hit содержит информацию только об одном этом пересечении.
  3. Существует перегрузка, которая собирает информацию обо всех пересечениях напротяжении всего луча.
  4. Результаты собираются в массив или список, в порядке пересечения, а значит, в порядке удаленности от источника луча.

ContactFilter

Структура, позволяющая автоматически фильртовать физические контакты по нескольким критериям. Мощный и гибкий инструмент для тонкой настройки того, какие коллайдеры должны участвовать в физических проверках, включая Raycast, Overlap, BoxCast и другие. Помогает избежать ненужных проверок, улучшая как логику, так и производительность.

Можно задать учет:

  1. layerMask - какие слои учитывать.
  2. useTriggers - учитывать ли триггеры.
  3. Прочие критерии: useLayerMask, useDepth, useNormalAngle и т.д.

Можно настроить один раз и переиспользовать.

  1. Все use флаги отключены по умолчанию. Если не установить useLayerMask = true, то layerMask игнорируется.
  2. По умолчанию ничего не фильтруется: если не включить ни один use, фильтр пропускает все коллайдеры (включая триггеры).
  3. useTriggers — особый случай: он сам по себе булев, и не требует отдельного флага. useTriggers = true → включать триггеры. useTriggers = false → игнорировать триггеры (чаще всего так и нужно).