Жесткие тела позволяют вашим GameObjectsосновным объектам в сценах Unity, которые могут представлять персонажей, реквизит , пейзажи, камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
См. в Словарь, чтобы действовать под контролем физики. Rigidbody может воспринимать силы и крутящий момент, чтобы ваши объекты двигались реалистично. Любой GameObject должен содержать Rigidbody, чтобы на него воздействовала гравитация, чтобы он действовал под действием дополнительных сил с помощью сценариев или взаимодействовал с другими объектами через физический движок NVIDIA PhysXСистема, моделирующая аспекты физических систем, чтобы объекты могли правильно ускоряться и подвергаться воздействию столкновений, гравитации и других сил. Подробнее
См. в Словарь.

Свойства
Свойства: | Функции: |
---|---|
Mass | Масса объекта (по умолчанию в килограммах). |
Drag | Насколько сопротивление воздуха влияет на объект при движении от сил. 0 означает отсутствие сопротивления воздуха, а бесконечность заставляет объект немедленно останавливаться.. |
Angular Drag | Насколько сопротивление воздуха влияет на объект при вращении от крутящего момента. 0 означает отсутствие сопротивления воздуха. Обратите внимание, что вы не можете остановить вращение объекта, просто установив его угловое перетаскивание на бесконечность.. |
Use Gravity | Если включено, на объект действует гравитация. |
Is Kinematic | Если этот параметр включен, физический движок не будет управлять объектом, и им можно будет манипулировать только с помощью преобразования. Это полезно для движущихся платформ или если вы хотите анимировать Rigidbody, к которому прикреплено HingeJoint. |
InterpolateПроцесс вычисления значений между двумя определенными значениями. Используется в анимации (между ключевыми кадрами), физике (между физическими временными шагами) и многопользовательской игре (между сетевыми обновлениями). См. в Словарь |
Попробуйте один из вариантов, только если вы видите рывки в движении вашего Rigidbody. |
- None | Интерполяция не применяется. |
- Interpolate | Преобразование сглаживается на основе преобразования предыдущего кадра.. |
- ExtrapolateПроцесс сохранения нескольких последних известных значений и их использования для прогнозирования будущих значений. Используется в анимации, физике и мультиплеере. See in Словарь |
Преобразование сглаживается на основе предполагаемого преобразования следующего кадра.. |
Collision DetectionАвтоматический процесс, выполняемый Unity, который определяет, вступал ли движущийся GameObject с Rigidbody и компонентом коллайдера в контакт с какими-либо другими коллайдерами. Подробнее См. в Словарь |
Используется для предотвращения прохождения быстро движущихся объектов через другие объекты без обнаружения столкновенийСтолкновение происходит, когда физический движок обнаруживает, что объект коллайдеры двух GameObjects соприкасаются или перекрываются, когда хотя бы один из них имеет компонент Rigidbody и находится в движении. More info See in Словарь. |
- Discrete | Используйте дискретное обнаружение столкновений со всеми другими коллайдерами в СценеСцена содержит среду и меню вашего игра. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее См. в Словарь. Другие коллайдеры будут использовать дискретное обнаружение столкновений при проверке на столкновение с ним. Используется для обычных столкновений (это значение по умолчанию). |
- Continuous | Используйте дискретное обнаружение столкновений с динамическими коллайдерами (с жестким телом) и основанное на развертке непрерывное обнаружение столкновенийметод обнаружения столкновений, который вычисляет и разрешает коллизий на протяжении всего шага физического моделирования. Это может предотвратить туннелирование быстро движущихся объектов сквозь стены во время этапа моделирования. Подробнее См. в Словарь против статических коллайдеров (без Rigidbody). Твердые тела, для которых установлено значение Continuous Dynamic, будут использовать непрерывное обнаружение столкновений при тестировании на столкновение с этим твердым телом. Другие твердые тела будут использовать обнаружение дискретных столкновений. Используется для объектов, с которыми необходимо столкнуться при обнаружении Continuous Dynamic. (Это сильно влияет на производительность физики, оставьте значение Discrete, если у вас нет проблем со столкновениями быстрых объектов) |
- Continuous Dynamic | Используйте непрерывное обнаружение столкновений на основе развертки для объектов GameOject, для которых задано столкновение Continuous и Continuous Dynamic. Он также будет использовать непрерывное обнаружение столкновений со статическими коллайдерами (без Rigidbody). Для всех других коллайдеров используется дискретное обнаружение столкновений. Используется для быстро движущихся объектов. |
- Continuous Speculative | Используйте спекулятивное непрерывное обнаружение столкновенийМетод обнаружения столкновений, который расширяет широкофазную AABB движущихся объектов в соответствии с их скоростями. Это включает поддержку таких эффектов, как повороты. Подробнее См. в Словарь о твердых телах и коллайдерах. Это также единственный режим ПЗС, в котором можно задавать кинематические тела. Этот метод, как правило, дешевле, чем непрерывное обнаружение столкновений на основе развертки. |
ConstraintsНастройки компонентов соединения, которые ограничивают движение или вращение. Тип и количество ограничений зависит от типа соединения. Подробнее См. в Словарь |
Ограничения на движение твердого тела:- |
- Freeze Position | Выборочно останавливает твердое тело, перемещающееся по мировым осям X, Y и Z. |
- Freeze Rotation | Выборочно останавливает вращение Rigidbody вокруг локальных осей X, Y и Z. |
Подробнее
Твердые тела позволяют вашим игровым объектам действовать под управлением физического движка. Это открывает путь к поведению, такому как реалистичные столкновения и различные типы соединенийфизический компонент, обеспечивающий динамическую связь между компонентами Rigidbody, обычно позволяя некоторую степень движения, такие как шарнир. Подробнее
См. в Словарь. Манипулирование вашими игровыми объектами путем добавления сил к Rigidbody создает совсем другое ощущение и внешний вид, чем настройка Transform Componentфункциональной части GameObject . GameObject может содержать любое количество компонентов. В Unity есть много встроенных компонентов, и вы можете создавать свои собственные, написав сценарии, которые наследуются от MonoBehaviour. Подробнее
См. непосредственно в Словарь. Как правило, вы не должны манипулировать Rigidbody и Transform одного и того же GameObject — только тем или другим.
Самая большая разница между манипулированием Transform и Rigidbody заключается в использовании сил. Твердые тела могут воспринимать силы и крутящий момент, а преобразования — нет. Преобразования можно перемещать и вращать, но это не то же самое, что использовать физику. Вы заметите явную разницу, когда попробуете это на себе. Добавление силы/крутящего момента к Rigidbody фактически изменит положение объекта и вращение компонента TransformКомпонент Transform определяет положение, вращение , и Масштаб каждого объекта в сцене. Каждый GameObject имеет Transform. Подробнее
См. в Словарь. Вот почему вы должны использовать только один или другой. Изменение преобразования при использовании физики может вызвать проблемы с коллизиями и другими вычислениями.
Твердые тела должны быть явно добавлены в ваш GameObject, прежде чем на них повлияет физический движок. Вы можете добавить Rigidbody к выбранному объекту из меню Components->Physics->Rigidbody. Теперь ваш объект готов к физике; он будет падать под действием силы тяжести и может получать силы с помощью скрипта, но вам может потребоваться добавить коллайдерневидимую форму, которая используется для обрабатывать физические столкновения для объекта. Коллайдер не обязательно должен быть точно такой же формы, как сетка объекта — грубое приближение часто бывает более эффективным и неразличимым в игровом процессе. Подробнее
Посмотрите в Словарь или в Джойнте, чтобы заставить его вести себя именно так, как вы хотите.
Воспитание детей
Когда объект находится под контролем физики, он движется полунезависимо от того, как двигаются его родители-трансформеры. Если вы переместите каких-либо родителей, они потянут за собой дочернего элемента Rigidbody. Однако твердые тела по-прежнему будут падать под действием силы тяжести и реагировать на события столкновения.
Сценарий
Для управления вашими твердыми телами вы в основном будете использовать скриптыфрагмент кода, позволяющий создавать собственные компоненты, запускать игровые события, изменяйте свойства компонентов с течением времени и реагируйте на действия пользователя любым удобным для вас способом. Подробнее
См. Словарь, чтобы добавить усилия или крутящий момент. Вы делаете это, вызывая AddForce() и AddTorque() на Rigidbody объекта. Помните, что вы не должны напрямую изменять Transform объекта, когда используете физику.
Анимация
Для некоторых ситуаций, в основном для создания эффектов рэгдолла, необходимо переключить управление объектом между анимацией и физикой. Для этого твердые тела можно пометить isKinematic. Пока Rigidbody помечен как isKinematic, на него не будут влиять столкновения, силы или любая другая часть физической системы. Это означает, что вам придется управлять объектом, напрямую управляя компонентом Transform. Кинематические твердые тела будут влиять на другие объекты, но на них самих физика не повлияет. Например, шарниры, прикрепленные к кинематическим объектам, будут ограничивать любые другие твердотельные тела, прикрепленные к ним, а кинематические твердые тела будут влиять на другие твердые тела посредством столкновений.
Коллайдеры
Коллайдеры — это еще один тип компонентов, которые необходимо добавить вместе с Rigidbody, чтобы разрешить возникновение столкновений. Если два твердых тела столкнутся друг с другом, физический движок не будет рассчитывать столкновение, если к обоим объектам также не подключен коллайдер. Безколлайдерные твердые тела будут просто проходить сквозь друг друга во время физического моделирования.

Добавьте коллайдер с помощью меню Компонент->Физика. Просмотрите страницу с описанием компонентов любого отдельного коллайдера для получения более подробной информации:
-
Box ColliderКомпонент коллайдера в форме куба, который обрабатывает коллизии игровых объектов, таких как игральные кости. и кубики льда. Подробнее
См. в Словарь - примитивная форма куба -
Сферический коллайдерКомпонент-коллайдер в форме сферы, который обрабатывает столкновения игровых объектов, например мячей. или другие вещи, которые можно грубо представить как сферу для целей физики. Подробнее
См. в Словарь - примитивная форма сферы -
Капсульный коллайдерКомпонент-коллайдер в форме капсулы, который обрабатывает коллизии игровых объектов, таких как бочки. и конечности персонажа. Подробнее
См. в Словарь - примитивная форма капсулы -
Сетевой коллайдерКомпонент коллайдера произвольной формы, который принимает ссылку на сетку для определения форму его поверхности столкновения. Подробнее
См. в Словарь — создает коллайдер из meshОсновной графический примитив Unity. Меши составляют большую часть ваших 3D-миров. Unity поддерживает триангулированные или четырехугольные полигональные сетки. Поверхности Nurbs, Nurms, Subdiv должны быть преобразованы в полигоны. Подробнее
См. в Словарь, не может конфликтовать с другим Mesh Collider -
Колесный коллайдерСпециальный коллайдер для наземных транспортных средств. Он имеет встроенное обнаружение столкновений, физику колес и модель трения шин на основе проскальзывания. Его можно использовать для объектов, отличных от колес, но он специально разработан для транспортных средств с колесами. Подробнее
См. в Словарь – специально для создания автомобилей или других движущихся транспортных средств -
Terrain ColliderКомпонент коллайдера в форме ландшафта, который обрабатывает столкновения для поверхности столкновения с той же формы, что и объект Terrain, к которому он прикреплен. Подробнее
См. в Словарь — обрабатывает коллизии с классом Unity terrainПейзаж в вашей сцене. Игровой объект Terrain добавляет в вашу сцену большую плоскую плоскость, и вы можете использовать окно Terrain Inspector для создания подробного ландшафта. Подробнее
См. в системе Словарь
Составные коллайдеры
Составные коллайдеры — это комбинации примитивных коллайдеров, совместно действующих как единое жесткое тело. Они пригодятся, когда у вас есть модель, которая была бы слишком сложной или дорогостоящей с точки зрения производительности для точного моделирования, и вы хотите оптимальным образом смоделировать столкновение формы, используя простые приближения. Чтобы создать составной коллайдер, создайте дочерние объекты вашего сталкивающегося объекта, а затем добавьте компонент коллайдера к каждому дочернему объекту. Это позволяет легко и независимо друг от друга позиционировать, вращать и масштабировать каждый коллайдер. Вы можете создать составной коллайдер из нескольких примитивных коллайдеров и/или коллайдеров с выпуклой сеткой.

На приведенном выше рисунке к игровому объекту Gun Model прикреплено твердое тело и несколько примитивных коллайдеров в качестве дочерних игровых объектов. Когда родитель Rigidbody перемещается силами, дочерние коллайдеры движутся вместе с ним. Примитивные коллайдеры будут сталкиваться с сетчатым коллайдером среды, а родительское Rigidbody будет изменять способ своего движения в зависимости от приложенных к нему сил и того, как его дочерние коллайдеры взаимодействуют с другими коллайдерами в сцене.
Сетчатые коллайдеры обычно не могут сталкиваться друг с другом. Если Mesh Collider помечен как Выпуклый, он может столкнуться с другим Mesh Collider. Типичным решением является использование примитивных коллайдеров для любых движущихся объектов и сетчатых коллайдеров для статических фоновых объектов.
Примечание. Составные коллайдеры возвращают отдельные обратные вызовы для каждой пары столкновений коллайдеров при использовании обратных вызовов столкновений.
Непрерывное обнаружение столкновений
Непрерывное обнаружение столкновений — это функция, предотвращающая пересечение быстро движущихся коллайдеров друг друга. Это может произойти при использовании обычного (Дискретного) обнаружения столкновений, когда объект находится по одну сторону коллайдера в одном кадре, а уже прошел коллайдер в следующем кадре. Чтобы решить эту проблему, вы можете включить непрерывное обнаружение столкновений с твердым телом быстро движущегося объекта. Установите режим обнаружения столкновений на Continuous, чтобы твердое тело не проходило через любые статические (т. е. нежесткие) MeshColliders. Установите его на Continuous Dynamic, чтобы твердое тело также не проходило через любые другие поддерживаемые твердые тела с режимом обнаружения столкновений, установленным на Continuous или Continuous Dynamic.
Непрерывное обнаружение столкновений поддерживается для Box-, Sphere- и CapsuleColliders. Обратите внимание, что непрерывное обнаружение столкновений предназначено в качестве системы безопасности для обнаружения столкновений в случаях, когда объекты в противном случае проходили бы друг через друга, но не давали бы физически точных результатов столкновения, поэтому вы все равно можете рассмотреть возможность уменьшения фиксированного значения шага времени в TimeManager инспекторОкно Unity, в котором отображается информация о текущем выбранном игровом объекте, активе или настройках проекта, что позволяет вам просматривать и редактировать значения. Дополнительная информация
См. в Словарь, чтобы сделать моделирование более точным, если у вас возникнут проблемы с быстро движущиеся объекты.
Используйте правильный размер
Размер сетки вашего GameObject гораздо важнее, чем масса Rigidbody. Если вы обнаружите, что ваше Rigidbody ведет себя не совсем так, как вы ожидаете — оно движется медленно, плавает или неправильно сталкивается — рассмотрите возможность настройки масштаба вашего меш-ассета. Масштаб единиц измерения Unity по умолчанию равен 1 единице = 1 метру, поэтому масштаб импортируемой сетки сохраняется и применяется к физическим расчетам. Например, рушащийся небоскреб развалится совсем не так, как башня из игрушечных кубиков, поэтому объекты разных размеров необходимо моделировать в точном масштабе.
Если вы моделируете человека, убедитесь, что высота модели в Unity составляет около 2 метров. Чтобы проверить, имеет ли ваш объект правильный размер, сравните его с кубом по умолчанию. Вы можете создать куб, используя GameObject > 3D Object > Cube. Высота куба будет ровно 1 метр, поэтому ваш человек должен быть в два раза выше.
Если вы не можете настроить саму сетку, вы можете изменить единый масштаб определенного ресурса сетки, выбрав его в Просмотре проекта и выбрав Ресурсы->Настройки импорта… из меню. Здесь вы можете изменить масштаб и повторно импортировать сетку.
Если ваша игра требует, чтобы ваш GameObject создавался в разных масштабах, можно настроить значения осей масштабирования вашего Transform. Недостатком является то, что симуляция физики должна выполнять больше работы во время создания экземпляра объекта, что может привести к падению производительности вашей игры. Это не ужасная потеря, но она не так эффективна, как завершение вашей шкалы двумя другими вариантами. Также имейте в виду, что неоднородные шкалы могут привести к нежелательному поведению при использовании Parenting. По этим причинам всегда оптимально создавать объект в правильном масштабе в приложении для моделирования.
Советы
- Относительная масса двух твердых тел определяет их реакцию при столкновении друг с другом.
- Если одно твердое тело имеет большую массу, чем другое, это не заставит его падать быстрее в свободном падении. Используйте для этого перетаскивание.
- Низкое значение Drag делает объект тяжелым. Высокий делает его легким. Типичные значения Drag находятся в диапазоне от 0,001 (сплошной металлический блок) до 10 (перо).
- Если вы напрямую управляете компонентом Transform вашего объекта, но вам все еще нужна физика, присоедините Rigidbody и сделайте его кинематическим.
- Если вы перемещаете GameObject через его компонент Transform, но хотите получать сообщения о столкновении/триггере, вы должны прикрепить Rigidbody к движущемуся объекту.
- Вы не можете остановить вращение объекта, просто установив его угловое перетаскивание на бесконечность.
- Метод Continuous Speculative collision detection добавлен в 2018.3