- Box Collider
- примитивная форма куба - Sphere Collider
- примитивная форма сферы - Капсульный
- примитивная форма капсулы - Mesh Collider
коллайдера - создает коллайдер из сетки объекта, не может столкнуться с другойсеткой
Коллайдер - Wheel Collider
- специально для создания автомобилей или других движущихся транспортных средств - Terrain Collider
- обрабатывает столкновения сландшафтом
Unity системы - Относительная масса двух твердых тел определяет, как они реагируют, когда сталкиваются друг с другом.
- Придание одному твердому телу большей массы, чем другого, не делает его более быстрым в свободном падении. Используйте Drag для этого.
- Низкое значение Drag делает объект тяжелым. Высокий заставляет это казаться легким. Типичные значения для перетаскивания находятся между 0,001 (сплошной металлический блок) и 10 (перо).
- Если вы непосредственно управляете компонентом Transform вашего объекта, но все же хотите физику, присоедините Rigidbody и сделайте его кинематическим.
- Если вы перемещаете GameObject через его компонент Transform, но хотите получать сообщения Collision / Trigger, вы должны прикрепить Rigidbody к движущемуся объекту.
- Вы не можете заставить объект перестать вращаться, просто установив Angular Drag в бесконечность.
Твердые тела
ПЕРЕКЛЮЧИТЬСЯ НА СЦЕНАРИИ
Твердые тела активируют ваши GameObjects
действовать под контролем физики. Rigidbody может получать силы и крутящий момент, чтобы заставить ваши объекты двигаться реалистично. Любой GameObject должен содержать Rigidbody, на который может влиять сила тяжести, действовать под действием дополнительных сил посредством сценариев или взаимодействовать с другими объектами через физический движок NVIDIA PhysX
.
действовать под контролем физики. Rigidbody может получать силы и крутящий момент, чтобы заставить ваши объекты двигаться реалистично. Любой GameObject должен содержать Rigidbody, на который может влиять сила тяжести, действовать под действием дополнительных сил посредством сценариев или взаимодействовать с другими объектами через физический движок NVIDIA PhysX
.
Ссылка
https://docs.unity3d.com/ru/530/Manual/class-Rigidbody.htmlProperties, свойства
Свойство: Функция:
Mass
Масса объекта (в килограммах по умолчанию).
Drag
Какое сопротивление воздуха влияет на объект при движении от силы. 0 означает отсутствие сопротивления воздуха, а бесконечность заставляет объект немедленно прекращать движение.
Angular Drag
Какое сопротивление воздуха влияет на объект при вращении от крутящего момента. 0 означает отсутствие сопротивления воздуха. Обратите внимание, что вы не можете заставить объект перестать вращаться, просто установив его Angular Drag в бесконечность.
Use Gravity
Если включено, на объект влияет гравитация.
Is Kinematic
Если этот параметр включен, объект не будет управляться физическим движком, а может управляться только его преобразованием . Это полезно для перемещения платформ или если вы хотите анимировать Rigidbody, к которому прикреплен HingeJoint .
Interpolate
Попробуйте один из вариантов, только если вы видите рывки в движении вашего Rigidbody.
- None Интерполяция не применяется.
- Interpolate Преобразование сглаживается на основе преобразования предыдущего кадра.
- Extrapolate Преобразование сглаживается на основе оцененного преобразования следующего кадра.
Collision Detection
Используется для предотвращения прохождения быстро движущихся объектов через другие объекты без обнаружения столкновений
.
- Discrete
Используйте дискретное обнаружение столкновений со всеми другими коллайдерами в сцене
. Другие коллайдеры будут использовать дискретное обнаружение столкновений при тестировании на столкновение с ним. Используется для нормальных столкновений (это значение по умолчанию).
- Continuous
Используйте дискретное обнаружение столкновений с динамическими коллайдерами (с твердым телом) и непрерывное обнаружение
основе развертки. обнаружения против статических коллайдеров (без твердого тела). Твердые тела, для которых установлено значение Continuous Dynamic, будут использовать непрерывное обнаружение столкновений при тестировании на столкновение с этим твердым телом. Другие твердые тела будут использовать обнаружение дискретных столкновений. Используется для объектов с непрерывной динамикойобнаружение должно столкнуться с. (Это сильно влияет на производительность физики, оставьте его установленным на Дискретный , если у вас нет проблем со столкновениями быстрых объектов)
- Continuous Dynamic
Используйте непрерывное обнаружение столкновений на основе развертки для объектов GameOject, для которых установлено постоянное и непрерывное динамическое столкновение. Он также будет использовать непрерывное обнаружение столкновений со статическими коллайдерами (без твердого тела). Для всех других коллайдеров используется дискретное обнаружение столкновений. Используется для быстро движущихся объектов.
- Continuous Speculative
Использовать спекулятивное непрерывное обнаружение
обнаружения против твердых тел и коллайдеров. Это также единственный режим CCD, в котором вы можете устанавливать кинематические тела. Этот метод имеет тенденцию быть менее дорогим, чем непрерывное обнаружение столкновений на основе развертки.
Constraints
Ограничения на движение Rigidbody: -
- Freeze Position
Выборочно останавливает твердое тело, движущееся по осям X, Y и Z.
- Freeze Rotation
Выборочно останавливает твердое тело, вращающееся вокруг локальных осей X, Y и Z.
Детали
Твердые тела позволяют вашим GameObjects действовать под управлением физического движка. Это открывает путь к поведению, такому как реалистичные столкновения и различные типы соединений
. Управление объектами GameObject путем добавления сил к Rigidbody создает совершенно другое ощущение и внешний вид, чем настройка компонента Transform
непосредственно. Как правило, вы не должны манипулировать Rigidbody и Transform одного и того же GameObject - только один или другой.
. Управление объектами GameObject путем добавления сил к Rigidbody создает совершенно другое ощущение и внешний вид, чем настройка компонента Transform
непосредственно. Как правило, вы не должны манипулировать Rigidbody и Transform одного и того же GameObject - только один или другой.
Самая большая разница между манипулированием Трансформом и Твердым телом - это использование сил. Твердые тела могут получать силы и крутящий момент, а преобразования не могут. Преобразования могут быть переведены и повернуты, но это не то же самое, что использование физики. Вы заметите явную разницу, когда попробуете это для себя. Добавление силы / крутящего момента к Rigidbody фактически изменит положение объекта и вращение компонента
. Вот почему вы должны использовать только один или другой. Изменение преобразования при использовании физики может вызвать проблемы со столкновениями и другими вычислениями.
. Вот почему вы должны использовать только один или другой. Изменение преобразования при использовании физики может вызвать проблемы со столкновениями и другими вычислениями.
Твердые тела должны быть явно добавлены в ваш GameObject, прежде чем они будут затронуты физическим движком. Вы можете добавить Rigidbody к выбранному объекту из меню Components-> Physics-> Rigidbody . Теперь ваш объект готов к физике; он будет падать под действием силы тяжести и может получать силы с помощью сценариев, но вам может потребоваться добавить коллайдера,
или в Объединенном, чтобы заставить его вести себя именно так, как вы хотите.
или в Объединенном, чтобы заставить его вести себя именно так, как вы хотите.
Воспитание детей
Когда объект находится под контролем физики, он движется наполовину независимо от того, как движутся его родители-трансформеры. Если вы перевезете родителей, они потянут за собой ребенка Ригидбоди. Тем не менее, твердые тела все равно будут падать из-за силы тяжести и реагировать на столкновения.
Scripting
Для управления вашими жесткими телами вы в первую очередь будете использовать сценарии
чтобы добавить силы или крутящий момент. Вы делаете это, вызывая AddForce () и AddTorque () для Rigidbody объекта. Помните, что вы не должны напрямую изменять Transform объекта, когда вы используете физику.
чтобы добавить силы или крутящий момент. Вы делаете это, вызывая AddForce () и AddTorque () для Rigidbody объекта. Помните, что вы не должны напрямую изменять Transform объекта, когда вы используете физику.
Анимация
В некоторых ситуациях, главным образом создавая эффекты тряпичной куклы, необходимо переключать управление объектом между анимацией и физикой. Для этой цели жесткие антитела могут быть помечены как кинематические . Хотя жесткое тело помечено как кинематическое , оно не будет подвержено столкновениям, силам или любой другой части физической системы. Это означает, что вам придется управлять объектом, напрямую управляя компонентом Transform . Кинематические твердые тела будут воздействовать на другие объекты, но сами физики не будут влиять на них. Например, соединения, которые прикреплены к кинематическим объектам, будут ограничивать любые другие присоединенные к ним твердые тела, а кинематические твердые тела будут воздействовать на другие твердые тела посредством столкновений.
Коллайдеры
Коллайдеры - это еще один вид компонентов, который должен быть добавлен вместе с твердым телом, чтобы происходили столкновения. Если два твердотельных тела сталкиваются друг с другом, физический движок не будет вычислять столкновение, если к обоим объектам также не присоединен коллайдер. Жесткие тела без коллайдеров будут просто проходить сквозь друг друга во время физического моделирования.
Добавьте коллайдер с помощью меню Component-> Physics . Для получения более подробной информации просмотрите страницу «Ссылка на компонент» любого отдельного коллайдера
Составные коллайдеры
Составные коллайдеры - это комбинации примитивных коллайдеров, коллективно действующих как единое твердое тело. Они пригодятся, когда у вас есть модель, которая была бы слишком сложной или дорогостоящей с точки зрения производительности для точного моделирования, и вы хотите моделировать столкновение формы оптимальным способом, используя простые приближения. Чтобы создать составной коллайдер, создайте дочерние объекты вашего объекта столкновения, затем добавьте компонент Collider к каждому дочернему объекту. Это позволяет легко и независимо позиционировать, вращать и масштабировать каждый коллайдер. Вы можете построить свой составной коллайдер из нескольких примитивных коллайдеров и / или коллайдеров с выпуклой сеткой.
На приведенном выше рисунке к объекту Gun Model GameObject прикреплено тело Rigidbody и несколько примитивных коллайдеров в качестве дочерних объектов GameObject. Когда родитель Rigidbody перемещается силами, дочерние коллайдеры перемещаются вместе с ним. Примитивные коллайдеры будут сталкиваться с Mesh Collider окружающей среды, а родительское Rigidbody будет изменять его движение в зависимости от приложенных к нему сил и от того, как его дочерние коллайдеры взаимодействуют с другими коллайдерами в сцене.
Mesh Colliders обычно не могут сталкиваться друг с другом. Если Mesh Collider помечен как выпуклый , то он может столкнуться с другим Mesh Collider. Типичное решение - использовать примитивные коллайдеры для любых движущихся объектов, а Mesh Colliders для статических фоновых объектов.
Примечание. Составные коллайдеры возвращают отдельные обратные вызовы для каждой пары коллизионных коллизий при использовании коллизионных обратных вызовов .
Непрерывное обнаружение столкновений
Непрерывное обнаружение столкновений - это функция, препятствующая проходу быстро движущихся коллайдеров. Это может произойти при использовании обычного ( дискретного ) обнаружения столкновений, когда объект находится на одной стороне коллайдера в одном кадре и уже прошел коллайдер в следующем кадре. Чтобы решить эту проблему, вы можете включить непрерывное обнаружение столкновений на жестком теле быстро движущегося объекта. Установите режим обнаружения столкновений на Непрерывный, чтобы не допустить прохождения жесткого тела через любые статические (то есть, нежесткие тела) MeshColliders. Установите для него значение Continuous Dynamic, чтобы также предотвратить прохождение жесткого тела через любые другие поддерживаемые твердые тела с режимом обнаружения столкновений, установленным на Continuous или Continuous Dynamic, Непрерывное обнаружение столкновений поддерживается для Box-, Sphere- и CapsuleColliders. Обратите внимание, что непрерывное обнаружение столкновений предназначено для обеспечения безопасности при обнаружении столкновений в тех случаях, когда в противном случае объекты будут проходить друг через друга, но не будет обеспечивать физически точные результаты столкновений, поэтому вы все равно можете рассмотреть возможность уменьшения фиксированного значения шага по времени в инспекторе
TimeManager чтобы сделать симуляцию более точной, если у вас возникли проблемы с быстро движущимися объектами.
TimeManager чтобы сделать симуляцию более точной, если у вас возникли проблемы с быстро движущимися объектами.
Используйте правильный размер
Размер меша вашего GameObject намного важнее, чем масса Rigidbody. Если вы обнаружите, что ваше Rigidbody ведет себя не совсем так, как вы ожидаете - оно движется медленно, плавает или не сталкивается правильно - подумайте о корректировке масштаба вашего актива сетки. Масштаб единицы измерения Unity по умолчанию равен 1 единице = 1 метру, поэтому масштаб импортированной сетки сохраняется и применяется к физическим вычислениям. Например, разрушающийся небоскреб развалится совсем не так, как башня из игрушечных блоков, поэтому объекты разных размеров должны быть смоделированы в точном масштабе.
Если вы моделируете человека, убедитесь, что в Unity его высота составляет около 2 метров. Чтобы проверить, имеет ли ваш объект правильный размер, сравните его с кубом по умолчанию. Вы можете создать куб, используя GameObject> 3D Object> Cube . Высота куба будет ровно 1 метр, поэтому ваш человек должен быть в два раза выше.
Если вы не можете настроить саму сетку, вы можете изменить равномерный масштаб конкретного актива сетки, выбрав его в представлении проекта. Представление
и выберите Активы-> Настройки импорта… из меню. Здесь вы можете изменить масштаб и повторно импортировать вашу сетку.
и выберите Активы-> Настройки импорта… из меню. Здесь вы можете изменить масштаб и повторно импортировать вашу сетку.
Если ваша игра требует, чтобы ваш GameObject создавался в разных масштабах, можно отрегулировать значения осей масштабирования вашего Transform. Недостатком является то, что физическое моделирование должно выполнять больше работы во время создания объекта и может привести к падению производительности в вашей игре. Это не страшная потеря, но она не так эффективна, как завершение вашей шкалы с двумя другими вариантами. Также имейте в виду, что неоднородные шкалы могут создавать нежелательное поведение при использовании родительских функций. По этим причинам всегда оптимально создавать объект в правильном масштабе в приложении моделирования.
Комментариев нет:
Отправить комментарий