Физикой в ​​Unity занимается встроенный Physics Engine. Встроенный движок Physics Engine в Unity обрабатывает физику взаимодействия игровых объектов и различных эффектов, таких как гравитация, ускорение, столкновения и т. Д.

Коллайдер

Коллайдер необходим, если вы хотите, чтобы игровой объект обнаруживал столкновения с другими игровыми объектами в сцене. Но если вы хотите, чтобы на игровой объект с Коллайдером воздействовала физика, или чтобы знать, как столкновение влияет на другой игровой объект, вам понадобится Rigidbody.

Триггер

При включении Is Trigger превращает коллайдер в триггерный том, который позволяет другим игровым объектам проходить через него, и вместо записи столкновения он отправляет сообщение OnTriggerEnter, OnTriggerStay или OnTriggerExit, когда Rigidbody входит, остается или выходит из триггерного объема.

Материал

Предназначен, если вы хотите, чтобы в коллайдере был какой-либо уникальный физический материал. Физический материал позволяет вам регулировать трение и упругость коллайдера.

Жесткое тело

Физический движок в Unity знает, что объект предназначен для воздействия на физику, только если компонент Rigidbody добавлен к игровому объекту, без этого движок считает игровой объект статичным и неподвижным. Когда статический игровой объект (без Rigidbody) перемещается, физический движок повторно запускает вычисления, которые он выполняет для оптимизации статических объектов в сцене. Поэтому убедитесь, что у любого игрового объекта, который будет перемещаться, есть Rigidbody, чтобы Unity работала как можно оптимальнее. Rigidbody также требуется по крайней мере для одного из двух объектов, взаимодействующих во время события OnCollision или OnTrigger. Компонент Rigidbody имеет множество свойств, которые можно настроить, чтобы игровой объект по-разному реагировал на силы и столкновения.

Масса

Масса твердого тела игрового объекта, измеренная в килограммах с помощью Physics Engine. Как и в реальной жизни, игровой объект с большей массой больше реагирует на объект с меньшей массой.

Тащить, тянуть

Свойство Drag - это величина сопротивления, которое прикладывается к игровому объекту при его перемещении по сцене. Если сопротивление больше 0, это в конечном итоге приведет к остановке игрового объекта, если не будет приложена постоянная сила, и в этом случае перетаскивание будет препятствовать его движению и замедлять его (то есть падать медленнее).

Угловое перетаскивание

Angular Drag работает очень похоже на Drag, но оказывает сопротивление только скорости вращения игрового объекта, которая в большинстве случаев действует как Drag. Это не так, когда игровой объект движется без вращения, как будто падает прямо вниз.

Используйте гравитацию

При включении игровой объект будет притягиваться силой тяжести, как определено в настройках Unity. Настройки по умолчанию - -9,81 по оси Y, и их можно изменить в настройках проекта в разделе «Физика».

Кинематический

Is Kinematic контролирует, влияет ли физика на игровой объект. Когда игровой объект выключен, на него влияет физика, а когда он включен, игровой объект может быть перемещен только путем изменения преобразования с помощью кода или анимации. Если игровой объект должен быть статическим большую часть времени, но будет перемещаться в анимации или сценарии, обязательно добавьте Rigidbody и включите Is Kinematic, чтобы движок знал, что объект может перемещаться, и не тратить ресурсы при перемещении. .

Интерполировать

Поскольку физика в Unity обрабатывается в FixedUpdate, который запускается только каждые 0,02 секунды или 50 раз в секунду, Interpolate может помочь исправить любое дрожание движения, с которым вы можете столкнуться, вызванное фиксированной частотой кадров. Интерполяция может быть очень ресурсоемкой, поэтому, если вы не видите проблем, ее следует оставить по умолчанию. Три параметра интерполяции: «Нет», «Интерполировать» и «Экстраполировать».

Нет: отключен, используется по умолчанию, не требует дополнительных ресурсов.

Интерполировать: предыдущие кадры используются для сглаживания движения и являются наименее ресурсоемкими из включенных.

Экстраполировать: следующий кадр используется для сглаживания движения и требует значительных ресурсов.

Обнаружение столкновений

Это режим обнаружения столкновений Rigidbody, который имеет 4 настройки: дискретный, непрерывный, непрерывный динамический и непрерывный спекулятивный.

Примечание. Непрерывное обнаружение столкновений поддерживается только для твердых тел со сферическими, капсульными или прямоугольными коллайдерами

Дискретный: это режим обнаружения столкновений по умолчанию. Это наименее ресурсоемкий метод обнаружения столкновений, и в большинстве случаев его достаточно для удовлетворения потребностей в обнаружении. Единственный раз, когда вам нужно изменить это, - это когда у вас есть проблема со столкновением быстро движущихся игровых объектов.

Непрерывный: этот режим используется при столкновениях на высокой скорости со статическими (без жесткого тела) игровыми объектами. Это очень затратно по ресурсам.

Непрерывный динамический. Этот режим почти такой же, как и непрерывный. Разница в том, что это работает для статических и динамических (с жестким телом) игровых объектов. Это также очень ресурсоемко.

Непрерывный спекулятивный: этот режим делает то же, что и непрерывный динамический, но, как правило, требует меньше ресурсов за счет точности. Также может использоваться на кинематических игровых объектах.

Ограничения

Ограничения не позволяют игровому объекту перемещаться или вращаться по выбранным осям x, y или z или осям из физики, но по-прежнему его можно перемещать или вращать с помощью сценариев или анимации.