Rigidbody
Описание
Контроль положения объекта с помощью физического моделирования.
Добавление компонента Rigidbody к объекту передаёт управление его движением физическому движку Unity. Даже без дополнительного кода объект Rigidbody будет падать под действием силы тяжести и реагировать на столкновения с другими объектами, если у него также присутствует подходящий компонент Collider.
Rigidbody также предоставляет API скриптов, который позволяет прикладывать к объекту силы и управлять им физически реалистичным образом. Например, поведение автомобиля можно задать через силы, прикладываемые колёсами. На основе этих данных физический движок рассчитывает большинство остальных аспектов движения автомобиля, благодаря чему тот реалистично ускоряется и правильно реагирует на столкновения.
В скрипте рекомендуется прикладывать силы и изменять настройки Rigidbody в функции FixedUpdate, а не в Update, которая используется для большинства других задач покадрового обновления. Причина в том, что физика обновляется через фиксированные интервалы времени, не совпадающие с обновлением кадров. FixedUpdate вызывается непосредственно перед каждым обновлением физики, поэтому внесённые в ней изменения обрабатываются сразу.
На начальном этапе работы с Rigidbody часто кажется, что игровая физика работает «в замедленном режиме». На самом деле причина заключается в масштабе моделей. Стандартные настройки силы тяжести предполагают, что одна единица мирового пространства соответствует одному метру. В играх без физического моделирования не так важно, что длина всех моделей составляет 100 единиц, но физический движок будет считать их очень крупными объектами. Если объекты, которые должны быть маленькими, имеют большой масштаб, они кажутся падающими очень медленно: физический движок считает, что огромные объекты преодолевают огромные расстояния. Поэтому старайтесь задавать объектам масштаб, близкий к реальному (например, длина автомобиля должна составлять около 4 единиц, то есть 4 метров).
Свойства
| Свойство | Описание |
|---|---|
| angularDamping | Угловая амортизация объекта. |
| angularVelocity | Вектор угловой скорости жесткого тела, измеренный в радианах в секунду. |
| automaticCenterOfMass | Автоматический расчет центра массы. |
| automaticInertiaTensor | Автоматический расчет тензора инерции. |
| centerOfMass | Центр массы относительно источника преобразования. |
| collisionDetectionMode | Режим обнаружения столкновений Rigidbody. |
| constraints | Контролирует, какие степени свободы разрешены для моделирования этого Rigidbody. |
| detectCollisions | Должно ли быть включено обнаружение столкновений? (По умолчанию всегда включено). |
| excludeLayers | Дополнительные слои, которые все коллайдеры, прикрепленные к этому Rigidbody, должны исключать при решении, может ли Collider вступить в контакт с другим Collider. |
| freezeRotation | Управляет тем, будет ли физика изменять вращение объекта. |
| includeLayers | Дополнительные слои, которые все коллайдеры, прикрепленные к этому Rigidbody должны включать при решении, может ли Collider вступить в контакт с другим Collider. |
| inertiaTensor | Тензор инерции этого тела, определяемый как диагональная матрица в системе отсчета, расположенной в центре массы этого тела и вращающейся на Rigidbody.inertiaTensorRotation. |
| inertiaTensorRotation | Вращение тензора инерции. |
| interpolation | Интерполяции обеспечивает способ управлять появлением джиттера в движении вашего Rigidbody GameObjects во время выполнения. |
| isKinematic | Управляет влиянием физики на rigidbody. |
| linearDamping | Линейное ослабление линейной скорости Rigidbody. |
| linearVelocity | Вектор линейной скорости жесткого тела. Он представляет собой скорость изменения положения Rigidbody. |
| mass | Масса жесткого тела. |
| maxAngularVelocity | Максимальная угловая скорость тела в радианах в секунду. (По умолчанию 7) диапазон { 0, бесконечность }. |
| maxDepenetrationVelocity | Максимальная скорость твёрдого тела при выходе из состояния проникновения. |
| maxLinearVelocity | Максимальная линейная скорость жесткого кузова, измеренная в метрах в секунду. |
| position | Положение жесткого кузова. |
| rotation | Вращение Rigidbody. |
| sleepThreshold | Нормальный энергетический порог массы, ниже которого объекты начинают спать. |
| solverIterations | solverIterations определяет точность разрешения Rigidbody соединений и контактов столкновения. Переопределяет Physics.defaultSolverIterations. Должно быть положительным. |
| solverVelocityIterations | solverVelocityIterations влияет на то, как точно Rigidbody соединения и контакты столкновения разрешаются. Переопределяет Physics.defaultSolverVelocityIterations. Должно быть положительным. |
| useGravity | Управляет влиянием силы тяжести на это rigidbody. |
| worldCenterOfMass | Центр масс жесткого тела в мировом пространстве (только для чтения). |
Открытые методы
| Метод | Описание |
|---|---|
| AddExplosionForce | Применяет силу к жесткому телу, которая имитирует эффекты взрыва. |
| AddForce | Добавляет силу к Rigidbody. |
| AddForceAtPosition | Применяет силу на позицию. В результате этого будет применять крутящий момент и силу на объект. |
| AddRelativeForce | Добавляет силу к жесткому телу относительно его системы координат. |
| AddRelativeTorque | Добавляет крутящий момент к жесткому телу относительно его системы координат. |
| AddTorque | Добавляет крутящий момент к жесткому корпусу. |
| ClosestPointOnBounds | Наиболее близкая точка к предельной решетке присоединенных коллайдеров. |
| GetAccumulatedForce | Возвращает силу, которую Rigidbody накопил до шага моделирования. |
| GetAccumulatedTorque | Возвращает крутящий момент, который Rigidbody накопил до шага моделирования. |
| GetPointVelocity | Скорость жесткого тела в точке worldPoint в глобальном пространстве. |
| GetRelativePointVelocity | Скорость относительно жесткого тела в точке relativePoint. |
| IsSleeping | Неужели жесткое тело спит? |
| Move | Перемещает Rigidbody в позицию и вращает Rigidbody в поворот. |
| MovePosition | Перемещает кинематическую Rigidbody в направлении позиции. |
| MoveRotation | Поворачивает rigidbody на вращение. |
| PublishTransform | Применяет положение и вращение Rigidbody к соответствующему компоненту Transform. |
| ResetCenterOfMass | Сброс центра масс жесткого тела. |
| ResetInertiaTensor | Сброс значения тензора инерции и вращения. |
| Sleep | Принуждает жесткое тело спать до пробуждения. |
| SweepTest | Тестирует, столкнется ли rigidbody с чем-либо, если его переместить через Scene. |
| SweepTestAll | Как Rigidbody.SweepTest, но возвращает все попадания. |
| WakeUp | Заставляет жесткое тело проснуться. |
Сообщения
| Сообщение | Описание |
|---|---|
| OnCollisionEnter | OnCollisionEnter вызывается, когда этот коллайдер/жесткое тело начинает касаться другого коллайдера/жесткого тела. |
| OnCollisionExit | OnCollisionExit вызывают, когда коллайдер/жесткое тело перестает касаться другого коллайдера/жесткого тела. |
| OnCollisionStay | OnCollisionStay вызывается один раз в кадре для каждого Collider или Rigidbody, который касается другого Collider или Rigidbody. |
Унаследованные члены 4
Свойства
| Свойство | Описание |
|---|---|
| gameObject | GameObject, к которому прикреплен данный компонент. Компонент всегда прикрепляется к игровому объекту. |
| tag | Тег этого игрового объекта. |
| transform | Transform прикреплен к этому GameObject. |
| transformHandle | TransformHandle этого GameObject. |
| hideFlags | Должен ли объект быть скрытым, сохраняться с Scene или изменяться пользователем? |
| name | Имя объекта. |
Открытые методы
| Метод | Описание |
|---|---|
| BroadcastMessage | Вызывает метод с именем methodName на каждом MonoBehaviour в этом игровом объекте или любом из его дочерей. |
| CompareTag | Проверяет тег GameObject на соответствие определенному тегу. |
| GetComponent | Получает ссылку на компонент типа T на том же GameObject, что и указанный компонент. |
| GetComponentInChildren | Получает ссылку на компонент типа T на том же GameObject, что и указанный компонент, или на любого ребенка GameObject. |
| GetComponentIndex | Получает индекс компонента на его родительском GameObject. |
| GetComponentInParent | Получает ссылку на компонент типа T на том же GameObject, что и указанный компонент, или на любой родитель GameObject. |
| GetComponents | Получает ссылки на все компоненты типа T на том же GameObject, что и указанный компонент. |
| GetComponentsInChildren | Получает ссылки на все компоненты типа T на том же GameObject, что и указанный компонент, и на любого ребенка GameObject. |
| GetComponentsInParent | Получает ссылки на все компоненты типа T на том же GameObject, что и указанный компонент, и любой родитель GameObject. |
| SendMessage | Вызывает метод с именем methodName на каждом MonoBehaviour в этом игровом объекте. |
| SendMessageUpwards | Вызывает метод с именем methodName на каждом MonoBehaviour в этом игровом объекте и на каждом предшественнике поведения. |
| TryGetComponent | Получает компонент указанного типа, если он существует. |
| GetInstanceID | Получает экземпляр ID объекта. |
| ToString | Возвращает имя объекта. |
Статические методы
| Метод | Описание |
|---|---|
| Destroy | Удаляет GameObject, компонент или ресурс. |
| DestroyImmediate | Немедленно уничтожает указанный объект. Используйте с осторожностью и только в режиме редактирования. |
| DontDestroyOnLoad | Не уничтожать целевой Объект при загрузке нового Scene. |
| FindAnyObjectByType | Получает любой активный загруженный объект типа Type. |
| FindFirstObjectByType | Получает первый активный загруженный объект типа Type. |
| FindObjectsByType | Получает список всех загруженных объектов типа Type. |
| Instantiate | Клонирует исходный объект и возвращает клон. |
| InstantiateAsync | Захватывает моментальный снимок первоначального объекта (который должен быть связан с каким-либо GameObject) и возвращает AsyncInstantiateOperation. |
Операторы
| Оператор | Описание |
|---|---|
| bool | Существует ли объект? |
| оператор!= | Сравнивает, если два объекта ссылаются на разные объекты. |
| оператор == | Сравнение двух ссылок на объекты для определения того, относятся ли они к одному и тому же объекту. |