Описание
Управление положением объекта с помощью физического моделирования.
Добавление компонента Rigidbody к объекту поставит его движение под контроль физического движка Unity. Даже без добавления кода объект Rigidbody будет тянуться вниз под действием силы тяжести и будет реагировать на столкновения с приближающимися объектами, если также присутствует правильный компонент Collider.
У Rigidbody также есть API сценариев, который позволяет вам применять силы к объекту и управлять им физически реалистичным способом. Например, поведение автомобиля можно описать с точки зрения сил, приложенных к колесам. Учитывая эту информацию, физический движок может обрабатывать большинство других аспектов движения автомобиля, поэтому он будет реалистично ускоряться и правильно реагировать на столкновения.
В сценарии функция FixedUpdate рекомендуется как место для приложения усилий и изменения настроек Rigidbody (в отличие от Update, который используется для большинства других задач обновления фреймов). Причина этого в том, что обновления физики выполняются в измеренных временных шагах, которые не совпадают с обновлением кадра. FixedUpdate вызывается непосредственно перед каждым обновлением физики, поэтому любые внесенные изменения будут обрабатываться напрямую.
Частая проблема при запуске Rigidbodies заключается в том, что игровая физика работает в "замедленном темпе". На самом деле это связано с масштабом, используемым для ваших моделей. Настройки гравитации по умолчанию предполагают, что одна мировая единица соответствует одному метру расстояния. В нефизических играх не имеет большого значения, если все ваши модели имеют длину 100 единиц, но при использовании физики они будут рассматриваться как очень большие объекты. Если для объектов, которые должны быть маленькими, используется большой масштаб, они будут падать очень медленно — физический движок думает, что это очень большие объекты, падающие с очень больших расстояний. Имея это в виду, следите за тем, чтобы ваши объекты были более или менее в масштабе в реальной жизни (например, автомобиль должен быть около 4 единиц = 4 метра).
Свойства
angularDrag |
Угловое сопротивление объекта. |
angularVelocity |
Вектор угловой скорости твердого тела, измеренный в радианах в секунду. |
centerOfMass |
Центр масс относительно начала координат преобразования. |
collisionDetectionMode |
Режим обнаружения столкновений Rigidbody. |
constraints |
Управляет тем, какие степени свободы разрешены для моделирования этого твердого тела. |
detectCollisions |
Должно ли быть включено обнаружение столкновений? (По умолчанию всегда включено). |
drag |
Перетаскивание объекта. |
freezeRotation |
Управляет тем, будет ли физика изменять вращение объекта. |
inertiaTensor |
Тензор инерции этого тела, определенный как диагональная матрица в системе отсчета, расположенная в центре масс этого тела и вращаемая Rigidbody.inertiaTensorRotation. |
inertiaTensorRotation |
Вращение тензора инерции. |
interpolation |
Интерполяция позволяет сгладить эффект запуска физики при фиксированной частоте кадров. |
isKinematic |
Управляет тем, влияет ли физика на твердое тело. |
mass |
Масса твердого тела. |
maxAngularVelocity |
Максимальная угловая скорость твердого тела, измеренная в радианах в секунду. (по умолчанию 7) диапазон {0, бесконечность}. |
maxDepenetrationVelocity |
Максимальная скорость твердого тела при выходе из состояния проникновения. |
position |
Положение твердого тела. |
rotation |
Вращение Rigidbody. |
sleepThreshold |
Порог энергии, нормализованный по массе, ниже которого объекты начинают засыпать. |
solverIterations |
Итерации решения определяют, насколько точно разрешаются соединения Rigidbody и контакты столкновения. Переопределяет Physics.defaultSolverIterations. Должен быть положительным. |
solverVelocityIterations |
РешательVelocityIterations влияет на то, насколько точно разрешаются соединения Rigidbody и контакты столкновения. Переопределяет Physics.defaultSolverVelocityIterations. Должен быть положительным. |
useGravity |
Управляет тем, влияет ли гравитация на это твердое тело. |
velocity |
Вектор скорости твердого тела. Он представляет собой скорость изменения положения твердого тела. |
worldCenterOfMass |
Центр масс твердого тела в мировом пространстве (только для чтения). |
Публичные Методы
AddExplosionForce |
Применяет силу к твердому телу, имитирующую эффекты взрыва. |
AddForce |
Добавляет силу твердому телу. |
AddForceAtPosition |
Применяет силу в заданном положении. В результате к объекту будут приложены крутящий момент и сила. |
AddRelativeForce |
Добавляет силу к твердому телу относительно его системы координат. |
AddRelativeTorque |
Добавляет крутящий момент к твердому телу относительно его системы координат. |
AddTorque |
Добавляет крутящий момент к твердому телу. |
ClosestPointOnBounds |
Ближайшая точка к ограничивающей рамке прикрепленных коллайдеров. |
GetPointVelocity |
Скорость твердого тела в точке worldPoint в глобальном пространстве. |
GetRelativePointVelocity |
Скорость относительно твердого тела в точке relativePoint. |
IsSleeping |
Твердое тело спит? |
MovePosition |
Перемещает кинематическое твердое тело в нужное положение. |
MoveRotation |
Поворачивает твердое тело для вращения. |
ResetCenterOfMass |
Сбросить центр масс твердого тела. |
ResetInertiaTensor |
Сброс значения тензора инерции и поворота. |
SetDensity |
Устанавливает массу на основе подключенных коллайдеров, предполагая постоянную плотность. |
Sleep |
Заставляет твердое тело заснуть хотя бы на один кадр. |
SweepTest |
Проверяет, столкнется ли твердое тело с чем-либо, если его перемещать по сцене. |
SweepTestAll |
То же, что и Rigidbody.SweepTest, но возвращает все совпадения. |
WakeUp |
Заставляет твердое тело проснуться. |
Сообщения
OnCollisionEnter |
OnCollisionEnter вызывается, когда этот коллайдер/твердое тело начинает касаться другого твердого тела/коллайдера. |
OnCollisionExit |
OnCollisionExit вызывается, когда этот коллайдер/жесткое тело перестает касаться другого твердого тела/коллайдера. |
OnCollisionStay |
OnCollisionStay вызывается один раз за кадр для каждого коллайдера/жесткого тела, соприкасающегося с твердым телом/коллайдером. |
Унаследованные члены
Свойства
gameObject |
Игровой объект, к которому прикреплен компонент. Компонент всегда привязан к игровому объекту. |
tag |
Тег игрового объекта. |
transform |
Transform, прикрепленный игровому объекту. |
hideFlags |
Должен ли объект быть скрыт, сохранен вместе со сценой или изменен пользователем? |
name |
Имя объекта |
Публичные Методы
BroadcastMessage |
Вызывает метод с именем methodName для каждого MonoBehaviour в игровом объекте или любом из его дочерних элементов. |
CompareTag |
Помечен ли этот игровой объект тегом? |
GetComponent |
Возвращает компонент, если он прикреплён к игровому объекту, и null, если нет. Также возвращает отключенные компоненты. |
GetComponentInChildren |
Возвращает компонент дочернего элемента игрового объекта, используя поиск в глубину. |
GetComponentInParent |
Возвращает компонент игрового объекта в любом из его родителей. |
GetComponents |
Возвращает все компоненты игрового объекта |
GetComponentsInChildren |
Возвращает все компоненты дочерних элементов игрового объекта. Работает рекурсивно. |
GetComponentsInParent |
Возвращает все компоненты игрового объекта любого из родителя. |
SendMessage |
Вызывает метод с именем methodName для каждого MonoBehaviour в этом игровом объекте. |
SendMessageUpwards |
Вызывает метод с именем methodName для каждого MonoBehaviour в этом игровом объекте и для каждого behaviour. |
TryGetComponent |
Получает компонент указанного типа, если он существует. |
GetInstanceID |
Возвращает идентификатор экземпляра объекта. |
ToString |
Возвращает имя объекта. |
Статические Методы
Операторы
bool |
Объект существует? |
operator != |
Сравнивает, ссылаются ли два объекта на другой объект. |
operator == |
Сравнивает две ссылки на объекты, чтобы определить, ссылаются ли они на один и тот же объект. |