Руководство программиста по физике сетки
Общие советы
Вы можете начать с сканирования документации по физике Unity. Существует множество ресурсов, доступных для оптимизации физики в Unity.
Физика сетки поставляется с некоторыми дополнительными проблемами. Ниже приведены некоторые советы, которые помогут преодолеть их.
Сделайте толстые стены: синхронизация сети может немного перемещать жесткие тела. В результате вы увидите некоторое дополнительное проникновение между объектами. Небольшие динамические тела могут попасть через тонкие стены. Для более толстых объектов и стен эти туннелирование эффектов менее вероятны. По возможности используйте выпуклый корпус или небольшой набор выпуклых корпусов для динамических тел.
По возможности используйте толстые выпуклые части для статической геометрии. Старайтесь избежать сетки, особенно высокоплотные сетки.
Реалистичные массы в кг: содержимое из различных источников может взаимодействовать в одной сцене. Это хорошо работает, если коэффициенты массы между объектами являются разумными. Хорошая отправная точка заключается в назначении реалистичных масс телам, использующим кг.
Разработка расширенного содержимого Сетки
Анимации автоматического воспроизведения
Вы можете добавить анимацию автоматического воспроизведения в сцену, которая взаимодействует с физическими телами. Эти анимации автоматически синхронизируются между клиентами путем временной настройки скорости воспроизведения (замедление их или ускорение) на каждом клиенте, пока все клиенты не находятся в одном состоянии анимации одновременно.
Параметры
- Автоматически включено воспроизведение.
- Анимация физики рекомендуется (но не требуется), если анимация влияет на коллидеры, взаимодействующие с физическими телами.
- Тип отбрасывания имеет значение Always Animate (автоматически применяется физики сетки), так как анимация может повлиять на физические тела даже при отключении экрана.
Клип анимации, используемый анимацией автоматического воспроизведения, может использовать любой режим оболочки. Полезные варианты: "Цикл" и "Ping Pong".
Компоненты
Добавление одного из следующих MonoBehaviour
компонентов к объекту приведет к добавлению конкретного поведения в этот объект.
Липкий тело
Делает тела придерживаться других тел. Его можно использовать, чтобы бросать дарты на другие тела или прикрепить фотографию на стене. Это реализуется путем создания фиксированного ограничения между двумя участвующими органами. Примечание. Эта операция выполняется на всех клиентах и поэтому реализуется в виде специального сетевого сообщения.
Параметры
- Палка: определяет, будет ли тело придерживаться динамических или статических тел.
- Когда: Иногда вы хотите придерживаться быстрого тела, когда он просто касается другого тела, а иногда вы хотите придерживаться тела, когда он держится против другого тела в течение определенного времени, как ожидание клея, чтобы затвердить, когда вы клеи кнопку на стене.
- Управление столкновениями, чтобы отключить определенные столкновения между одним телом и другим. Как правило, можно или использовать слои столкновений. Однако, так как в Microsoft Mesh существует только 32 жестко закодированных слоя столкновений, это может не быть вариантом. Здесь можно отключить определенные тела.
- Затронутые тела для фильтра тела столкновений , примененного для управления столкновением.
Поле "Содержит"
Гарантирует, что жесткие тела остаются в пределах одного или нескольких коллайдеров триггеров.
Для работы этого компонента необходимо подключить к одному или нескольким коллайдерам триггера. (Эти коллидеры триггеров также могут быть вложены в иерархию преобразований под GameObject
присоединенным этим компонентом.)
Жесткие тела, затронутые этим компонентом, уже должны находиться в границах его коллайдеров триггера (том триггера) при запуске сцены. Затем центр массы каждого из этих жестких тел будет ограничен, чтобы оставаться в пределах тома триггера - невозможно вытягивать или иначе перемещать центры массы этих жестких тел в любом месте за пределами.
Параметры:
Максимальное отклонение от сдерживания позволяет центру массы затронутого жесткого кого-то немного выйти за пределы томов триггера, прежде чем он привязывается обратно. Это компромисс по оптимизации производительности: если допустимое максимальное отклонение большое, тело может заметно оставить том триггера и открепить назад, но код может избежать необходимости проверять и проверять положение тела очень часто, когда он отдыхает или медленно перемещается внутри тома триггера.
Затронутые тела определяют необязательные условия фильтрации для тел, затронутых этим компонентом. (По умолчанию все тела затронуты.)
Поле вектора скорости
Позволяет ускорить или сложить жесткий объект, пока он не достигнет определенной целевой скорости.
Этот компонент управляет как величиной, так и направлением скорости. См. поле "Величина скорости", чтобы управлять только величиной и полем направления скорости, чтобы управлять только направлением. Существует два режима работы:
- Если привязывается к жесткому, этот жесткий объект будет контролироваться.
- При присоединении к коллайдеру триггера будут затронуты все жесткие тела, поступающие в этот том триггера.
Параметры:
- Тип скорости определяет, работает ли мы на линейной или угловой скорости.
- Направление в локальном пространстве определяет, указана ли целевая скорость в локальном пространстве объекта, к которому присоединен компонент.
- Целевая скорость задает нужный вектор скорости в метрах/секунде (или радианы/секунды в случае угловой скорости).
- Максимальное ускорение определяет максимальное ускорение, применяемое для достижения целевой скорости.
- Тип ускорения определяет тип ускорения для достижения целевой скорости.
- Мгновенно достигнет целевой скорости немедленно (то же, что и постоянное ускорение с максимальным ускорением = бесконечность).
- Постоянное ускорение гарантирует, что тело достигает целевой скорости независимо от того, что в пределах параметра максимального ускорения.
- Гладкий подход сокращает ускорение, чем ближе к целевой скорости. Это означает, что, на практике, вы никогда не достигнете целевой скорости. Кроме того, должно быть какое-либо внешнее влияние, как идти вверх или вниз, это дополнительное влияние не будет полностью переопределено, в результате чего происходит быстрее вниз, чем в гору.
- Затронутые тела определяют необязательные условия фильтрации для тел, затронутых этим компонентом. (По умолчанию все тела затронуты.)
Масштабируемая гравитационная область
Изменяет, как гравитация влияет на жесткие тела в границах одного или нескольких коллидеров триггеров.
Для работы этого компонента необходимо подключить к одному или нескольким коллайдерам триггера. (Эти коллайдеры триггеров также могут быть вложены в иерархию преобразования под GameObject, в которую подключен этот компонент.)
Любые жесткие тела, касающиеся или перекрывающие коллидеры триггера ("том триггера") ведут себя в соответствии с параметрами тяжести этого компонента, а не глобальной физической гравитации. Жесткие тела, у которых отключена гравитация , игнорируются.
Существует интересная связь между восприятием собственного размера игрока в мире и гравитации:
- Если гравитация меньше , чем то, что мы привыкли (объекты медленнее, когда они падают), игрок воспринимает себя как большой - как гигант.
- Если гравитация больше , чем то, что мы привыкли (объекты быстрее, когда они падают), игрок воспринимает себя меньше - как мышь.
Параметры:
- Предустановка гравитации позволяет выбрать несколько интересных и полезных предустановок для свойства Масштабирования гравитации: различные небесные тела (Луна, Марс, Земля, Юпитер), не гравитация (Космическое пространство) или инвертированная гравитация (вверх снизу). Вы всегда можете перезаписать шкалу гравитации с любым нужным значением.
- Шкала тяжести задает локальную гравитацию внутри тома триггера относительно физической гравитации по умолчанию, влияющей на сцену. Шкала тяжести по умолчанию 1 оставляет гравитацию не затронутой; более крупные значения увеличивают тяжесть; 0 удаляет гравитацию; отрицательные значения переключают направление тяжести.
- Затронутые тела определяют необязательные условия фильтрации для тел, затронутых этим компонентом. (По умолчанию все тела затронуты.)
Орбитальное поле гравитации
Имитирует гравитацию "той планеты" в вашей сцене.
Для работы этого компонента необходимо подключить к одному или нескольким коллайдерам триггера. (Эти коллайдеры триггеров также могут быть вложены в иерархию преобразования под GameObject, в которую подключен этот компонент.)
Все жесткие тела, касающиеся или перекрывающие коллидеры триггеров (том триггера), извлекаются к позиции объекта, который имеет этот компонент.
Параметры:
Гравитация определяет величину гравитации. Это ускорение орбитального тела (луна) к центральному телу на расстоянии одного метра. Так как орбитальная скорость является sqrt(гравитация/радиус), это значение описывает скорость 200 луны на стабильной орбите в радиусе одного метра.
Отключение глобальной гравитации отключает глобальный параметр гравитации сцены для тел, затронутых этим компонентом. По умолчанию глобальная гравитация сцены по-прежнему влияет на вашу планету и ее луны.
Затронутые тела определяют необязательные условия фильтрации для тел, которые могут стать лунами в этом поле тяжести.
Принудительно Луны на круговой орбите является обманом, который применяет некоторые нежные силы, чтобы толкать луну на круговую орбиту. Мотивация заключается в том, что трудно для не эксперта установить гравитацию и начальную скорость тела таким образом, чтобы достичь круговой орбиты. Кроме того, если этот параметр включен, все луны, помещенные в поле гравитации в редакторе Unity, автоматически начинают орбиту своего центрального тела при загрузке сцены.
Сила принудительной орбиты масштабирует ускорение, примененное для принудительной луны на круговую орбиту.
Установка принудительного радиуса, где размещение делает луны, помещенные внутри поля гравитации в редакторе Unity, автоматически принимают их начальное расстояние от центрального тела в качестве предпочтительной орбиты.
Установить принудительный радиус, где удалено , делает луны, которые интерактивно захватываются и перемещаются в поле гравитации автоматически принимают расстояние от центрального тела, на котором они были удалены в качестве их предпочтительной орбиты.
Радиус принудительной силы по умолчанию определяет радиус по умолчанию для приведенного выше обмана, который используется, если не переопределяется любым из других параметров.
Поле buoyancy
Имитирует плавучесть произвольных жестких тел на воде: тела, как представляется, плавают на подключенном томе триггера.
Чтобы этот компонент работал, его необходимо подключить к одному или нескольким коллайдерам триггера. (Эти коллайдеры триггеров также могут быть вложены в иерархию преобразования под GameObject, в которую подключен этот компонент.)
Любые жесткие тела, касающиеся или перекрывающие коллайдеры триггеров ("том триггера") испытывают плавучесть сил (upthrust), чтобы держать их на плаву.
Этот компонент использует форму коллидеров жесткого объекта для вычисления плотности (другими словами, объема, разделенного на массу), плавучести, перетаскивания и трения.
Buoyancy Colliders
Преимущество: производительность. Вычислительные затраты вычислений вычислений плавучести масштабируется линейно с числом вершин коллидера. Типичные физические коллайдеры для тел, даже если уже упрощены, часто значительно сложнее (с точки зрения количества вершин), чем требуется для плавучести работать достаточно хорошо.
Практическое руководство. Добавление одного (или нескольких) дополнительных коллидеров (их можно отключить) в тело. Помечайте коллайдеры как явные плавучести корпуса, назначив физический материал с именем BuoyancyHull
(точные вопросы орфографии!). Сведения о конфигурации этого физического материала не имеют значения - подходящий физический материал поставляется с пакетом набора средств Сетки. Если тело имеет какие-либо коллидеры, помеченные таким образом, только эти коллидеры используются для вычислений плавучести; все остальные коллидеры игнорируются.
Рекомендации: Явный плавучесть корпуса коллидеры к любому жесткому объекту, который может быть брошен в BuoyancyField. Лучше всего (и проще всего) использовать коллидеры куба, потому что они имеют наименьшие вершины (восемь на коллидер). Сопоставление точной визуальной формы буйного тела обычно не требуется для хорошего результата; Очень грубое приближение обычно достаточно.
Параметры:
- Плотность — это плотность имитированной жидкости, которая "заполняет" объем триггера в килограммах на кубометр. (Значение по умолчанию представляет приблизительную плотность воды при комнатной температуре.)
- Тип поверхности указывает, как компонент примерирует форму поверхности воды для вычисления сил плавучести.
- Статическая плоская предполагает, что поверхность воды идеально планарна и никогда не перемещается с начальной позиции в сцене. Позиция и ориентация поверхности воды определяется только один раз, когда начинается сцена. Это самый дешевый вариант вычислений.
- Dynamic Flat предполагает, что поверхность воды идеально планарна, но позволяет перемещаться (например, уровень воды может подняться или поглотить). Позиция и ориентация поверхности воды определяется один раз на кадр.
- Dynamic Flat Per Body поддерживает поверхность воды, которая не планарна (например, она может быть волнистой). Для каждого жесткого объекта, плавающего на поверхности воды, местный планарный приближение поверхности воды под жестким телом определяется один раз на кадр, который затем используется для вычисления плавучести сил для этого жесткого.
- Затронутые тела определяют необязательные условия фильтрации для тел, которые могут плавать в этом поле плавучести. (По умолчанию все тела имеют право.)
- Перетаскивание управляет сопротивлением движения, так как жесткое тело попадает в воду (другими словами, трение ортогональное к поверхности тела).
- Трение кожи контролирует сопротивление движения, так как жесткое тело перемещается через воду (другими словами, трение параллельно поверхности тела).
Важно! Чтобы разрешить компоненту получить доступ к треугольникам сетки с жесткой частью, установите флажок "Чтение и запись включен" в параметрах импорта сетки коллидера. В противном случае тело будет игнорироваться полем плавучести и будет падать через поле, не затрагивая его.
Важно! Убедитесь, что ваши физические тела имеют правдоподобные массы, чтобы убедиться, что они ведут себя должным образом в поле плавучести:
- Если масса жесткого тело неправдоподобно высока по сравнению с его объемом, он будет утонуть в нижней части.
- Если масса жесткого объекта неправдоподобно низка по сравнению с его объемом (например, по умолчанию Unity
Rigidbody
одной единицы массы), он просто будет сидеть на вершине имитированной жидкости.
По умолчанию поле плавучести проверяет поверхность тома триггера, чтобы определить форму поверхности воды (при условии выбранного параметра типа поверхности воды). Поверхности, анимированные в памяти ЦП, можно использовать таким образом, но поверхности, анимированные шейдером вершин GPU, не видны скрипту во время выполнения. Компонент BuoyancyField
предоставляет делегат GetDistanceFromSurface
обратного вызова с доступом к скрипту, который позволяет внешним скриптам предоставлять сведения о фигуре поверхности воды с анимацией GPU.
Сведения о том, как получить волнистую поверхность воды без кода, см. BuoyancyFieldWaves
ниже.
Волны поля буоянси
Надстройка в BuoyancyField
компонент, который работает с определенным шейдером вершин (доступен как в виде графа подшейдера, BuoyancyFieldWaves_VertexPosition
так и файла включения HLSL). Это создает визуальный эффект волнистой поверхности воды вместе с соответствующим поведением объектов, плавающих на поверхности воды.
Этот компонент необходимо добавить в GameObject, который уже добавил BuoyancyField
в него компонент.
Водные поверхности, которые должны быть анимированы, должны быть предоставлены как плоская, тесселатированная сетка, границы которой имеют нужную форму поверхности воды при просмотре с верхней части вниз. Материал, используемый для поверхности воды, должен использовать шейдер, который включает BuoyancyFieldWaves_VertexPosition
подшейдер для определения позиций вершин сетки. Вы можете использовать включенный пример BasicWavyWaterSurface
материала (и граф шейдера с тем же именем) в качестве отправной точки для собственных разработки шейдеров.
Параметры:
- Средство отрисовки сетки волн ссылается на
MeshRenderer
компонент, который отрисовывает сетку поверхности воды.- Материал показывает, какой материал используется отрисовщиком. Эти данные приведены только для справки.
- Шейдер показывает, какой шейдер используется материалом. Эти данные приведены только для справки.
- Имена свойств шейдера волн определяют имена обязательных свойств шейдера, которые должны быть предоставлены шейдером. Эти свойства получают доступ к этому компоненту во время выполнения, чтобы гарантировать, что поведение поля плавучести остается синхронизировано с визуальными элементами поверхности воды для всех клиентов.
- Управляемое время скрипта — это имя предоставленного
float
свойства шейдера типа, которое будет постоянно обновляться этим компонентом каждый кадр с постоянно увеличивающимся временем (измеряется в секундах), синхронизированным во всех клиентах. ПодшейдерBuoyancyFieldWaves_VertexPosition
использует это общее время для создания шаблона волн, который остается синхронизированным на всех клиентах и синхронизирован с поведением поля плавучести. - Скорость волны — это имя свойства шейдера открытого
float
типа, определяющее базовую скорость распространения волн по горизонтали. Значение свойства должно быть задано в материале, применяемом к сетке поверхности волны. При установке этого значения значение равно нулю, поверхность волны становится статической и неподвижной. - Длина волны — это имя открытого
float
свойства шейдера типа, определяющее грубость шаблона волны. Значение свойства должно быть задано в материале, применяемом к сетке поверхности волны. Меньшие значения создают короткие рябь; большие значения создают длинные, радикальные волны. - Высота волны — это имя свойства шейдера открытого
float
типа, определяющее базовую высоту волн. Значение свойства должно быть задано в материале, применяемом к сетке поверхности волны. Установка этого значения равно нулю делает поверхность волны полностью плоской.
- Управляемое время скрипта — это имя предоставленного
Включенный BasicWavyWaterSurface
граф шейдера (используемый материалом с тем же именем) использует необходимый BuoyancyFieldWaves_VertexPosition
подшейдер вершин для создания волнистой трехмерной поверхности, но включает только минимальную реализацию автономного шейдера фрагмента, что делает ее отрисовкой как незатененные, полупрозрачные сетки.
Вы можете настроить путь фрагмента шейдера, который используется с компонентом полностью в соответствии с BuoyancyFieldWaves
вашим вкусом. Однако важно, чтобы путь вершины шейдера использовал BuoyancyFieldWaves_VertexPosition
граф подшейдера и что он предоставляет четыре входных данных для этого подшейдерного графа в виде float
свойств шейдера типа общего графа шейдера, чтобы компонент смог получить к ним доступ во время выполнения. Если шейдер не включает необходимый граф подшейдера или если какие-либо из необходимых свойств шейдера не предоставляются, инспектор компонента отобразит сообщение об ошибке во время разработки и плавучесть не будет работать во время выполнения:
BasicWavyWaterSurface
Пример графа шейдера может служить автономной во время разработки содержимого и в качестве отправной точки для собственных разработки шейдеров. Кроме того, можно взять существующий шейдер поверхности воды, сохранить путь фрагмента и заменить только путь вершины .
Максимальная скорость Angular
Переопределяет максимальную скорость по умолчанию физического тела.
Двигатель физики не позволит жесткому объекту превышать эту угловую скорость. Это может быть полезно либо ограничить скорость прокатки заданного жесткого тела, либо позволить ей свернуть быстрее, чем физика по умолчанию, которая составляет 50 радианов в секунду (примерно 8 революций в секунду).
Максимальная угловая скорость должна быть введена в радианы в секунду. Введенное значение также отображается в градусах в секунду (180 градусов ≈ 3,14 радианы) и революции в секунду (1 революция = 360 градусов ≈ 6,28 радианы).
Поле скорости величины
Разрешает ускорение и замедление жесткого объекта до тех пор, пока он не достигнет скорости, которая находится в допустимом диапазоне.
Этот компонент управляет величиной скорости и сохраняет текущее направление. Если объект будет по-прежнему, он выбирает случайное направление в течение одного кадра. Существует два режима работы:
- Если привязывается к жесткому, этот жесткий объект будет контролироваться.
- При присоединении к коллайдеру триггера будут затронуты все жесткие тела, поступающие в этот том триггера.
Параметры:
- Тип скорости определяет, работает ли мы на линейной или угловой скорости.
- Ограничения скорости задают требуемые ограничения минимальной и максимальной скорости в метрах/секунде (или радианы/секунды в случае угловой скорости). Если текущая скорость ниже минимального, она будет ускоряться, если это больше, чем максимальное значение, тело будет уменьшаться. Если текущая скорость уже находится в пределах ограничений, сценарий не действует. Чтобы задать определенную целевую скорость, задайте минимальное и максимальное значение.
- Максимальное ускорение определяет максимальное ускорение, применяемое для достижения целевой скорости.
- Тип ускорения определяет тип ускорения для достижения целевой скорости.
- Мгновенное ограничение скорости достигнет немедленно (то же, что и постоянное ускорение с максимальным ускорением = бесконечность).
- Постоянное ускорение гарантирует, что тело достигает целевой скорости независимо от того, что в пределах параметра максимального ускорения.
- Гладкий подход сокращает ускорение, чем ближе к целевой скорости. Это означает, что, на практике, вы никогда не достигнете целевой скорости. Кроме того, должно быть какое-либо внешнее влияние, как идти вверх или вниз, это дополнительное влияние не будет полностью переопределено, в результате чего происходит быстрее вниз, чем в гору.
- Затронутые тела определяют необязательные условия фильтрации для тел, затронутых этим компонентом. (По умолчанию все тела затронуты.)
Выравнивание поля
Выравнивает тело с указанной осью.
Этот компонент добавляет моментальный момент к телу, чтобы выровнять его с определенным направлением. Обратите внимание, что момент всегда применяется в направлении поворота тела к целевому объекту. Существует два режима работы:
- Если прикрепляется к жесткому, этот жесткий объект будет выровнен.
- При присоединении к коллайдеру триггера все жесткие тела, входя в этот том триггера, будут выровнены.
Параметры:
- Ось жесткого объекта задает ось затронутого жесткого объекта, который должен быть выровнен с целью.
- Режим выравнивания предоставляет различные режимы, чтобы указать выравнивание целевых объектов:
- В глобальном пространстве для указания выравнивания целевого объекта в глобальном пространстве .
- В локальном пространстве для указания выравнивания целевого объекта в локальном пространстве (имеет смысл только с томом триггера).
- Направление скорости для выравнивания тела по линейной скорости.
- К объекту игры, чтобы выровнять тело в сторону целевого игрового объекта.
- Целевое выравнивание задает целевое направление выравнивания. (Только если Режим выравнивания имеет значение "Глобальное пространство" или "В локальном пространстве".)
- Целевой игровой объект задает целевое направление выравнивания. (Только если Режим выравнивания имеет значение "К объекту игры".)
- Умножение крутящего момента масштабирует примененный момент, чтобы достичь целевого выравнивания; более высокий умножитель поворачивает тело быстрее (от 1 до 1000).
- Коэффициент демортизации задает коэффициент демпирации (от 0 до 5). Если задано ниже 1, тело может колебаться вокруг целевой ориентации.
- Затронутые тела определяют необязательные условия фильтрации для тел, затронутых этим компонентом. (По умолчанию все тела затронуты.)
Поле направления скорости
Позволяет управлять жестким объектом до тех пор, пока скорость не достигнет целевого направления.
Этот компонент управляет только направлением скорости и сохраняет текущую скорость. Существует два режима работы:
- Если привязывается к жесткому, этот жесткий объект будет контролироваться.
- При присоединении к коллайдеру триггера будут затронуты все жесткие тела, поступающие в этот том триггера.
Параметры:
- Тип скорости определяет, работает ли мы на линейной или угловой скорости.
- Следуйте объекту game, определяет, является ли целевой объект предопределенным направлением или направление к определенному GameObject. Работает только для линейной скорости.
- Целевой текст (если для объекта игры задано значение true): задает нужное направление выполнения.
- Целевое направление задает нужное направление. Это значение нормализуется, поэтому величина не влияет.
- Направление в локальном пространстве определяет, указано ли направление в локальном преобразовании взрыва.
- Максимальное ускорение определяет максимальное ускорение, применяемое для достижения целевой скорости.
- Тип ускорения определяет тип ускорения для достижения целевой скорости.
- Мгновенное достижение целевого направления немедленно (то же, что и постоянное ускорение с максимальным ускорением = бесконечность).
- Постоянное ускорение гарантирует, что тело достигает целевой скорости независимо от того, что в пределах параметра максимального ускорения.
- Гладкий подход сокращает ускорение, чем ближе к целевой скорости. Это означает, что, на практике, вы никогда не достигнете целевой скорости. Кроме того, если есть какое-либо внешнее влияние, например идти вверх или вниз, это дополнительное влияние не будет полностью переопределено, в результате чего происходит быстрее вниз, чем в гору.
- Затронутые тела определяют необязательные условия фильтрации для тел, затронутых этим компонентом. (По умолчанию все тела затронуты.)
Магнитное тело
Дает телу магнитное свойство, которое привлекает или отталкивает другие тела.
Для работы этого компонента необходимо подключить к одному или нескольким коллайдерам. (Эти коллайдеры также могут быть вложены в иерархию преобразования под GameObject
присоединенным этим компонентом.) Каждый коллидер демонстрирует силу на других жестких телах, которые достаточно близки к этому коллидеру.
Параметры:
- Сила определяет ускорение магнита в точке контакта (когда расстояние между коллидерами равно нулю).
- Расстояние влияния управляет диапазоном магнитной силы. Магнитная сила применяется только в том случае, если самое короткое расстояние между коллидерами меньше.
- Тип поля определяет, как магнитная сила ослабляется с расстоянием.
- Констант предполагает, что магнитная сила совпадает с расстоянием.
- Линейная предполагает, что магнитная сила падает линейно от силы к нулю (на расстоянии влияния).
- Обратное предполагает обратное пропорциональное зависимость от расстояния.
- Inverse Squared предполагает обратно пропорциональную зависимость от расстояния квадрата (аналогично реальному магниту).
- Магнитный полюс управляет объектами, к которым привлекаются объекты или отталкиваются этим объектом.
- Северный полюс привлекает южный полюс и отталкивает Северный полюс.
- Южный полюс привлекает Северный полюс и отталкивает южный полюс.
- Магнитный привлекает как южный полюс, так и северный полюс.
- Отключить гравитацию при контакте: если это включено, и сила магнита в два раза больше, чем гравитация, гравитация отключена для тел, которые находятся в контакте с этим магнитом. Один из объектов должен быть статическим, чтобы это повлияло. Это часто используется для предотвращения скольжения тел вниз по стене.
Сферический взрыв
Создает взрыв, который приводит ко всем телам в определенном радиусе перемещения наружу.
Сила взрыва зависит от массы жесткого тела (и потенциально расстояния от центра взрыва).
Параметры:
- Сила определяет влияние взрыва на тела в метрах/секунде. Фактическое изменение скорости меньше в зависимости от типа взрыва и критической массы (см. ниже).
- Расстояние влияния управляет диапазоном силы взрыва.
- Тип поля определяет, как эффект взрыва ослабляется с расстоянием.
- Констант предполагает, что эффект не зависит от расстояния.
- Линейное падение предполагает, что эффект падает от максимального до нуля (на расстоянии влияния).
- Критическая масса определяет массу тела, не затронутого взрывом. Более тяжелые тела чувствуют себя менее эффектом, чем легкие тела. Например, жесткий объект, который весит одну треть критической массы , будет чувствовать себя две трети скорости изменения.
- Шкала импульса Angular определяет, где применяется сила. Если задано значение 0, принудительно применяется в центре массы, что означает отсутствие поворота. Если задано значение 1, то сила применяется в ближайшей точке к взрыву.
- Occlusion If enabled, объекты, скрытые за другими объектами, не чувствуют взрыв. Только один луч между центром взрыва и центром массы проверяется для окклюзии.
Направление взрыва
Создает взрыв, который приводит ко всем телам в триггере двигаться в определенном направлении.
Сила взрыва зависит от массы жесткого тела. Для работы этого компонента необходимо подключиться к коллайдеру триггера. Затронуты все тела в коллидере триггера.
Параметры:
- Сила определяет влияние взрыва на тела в метрах/секунде. Фактическое изменение скорости меньше в зависимости от критической массы (см. ниже).
- Направление определяет направление взрыва. Это значение нормализуется, поэтому величина не влияет.
- Направление в локальном пространстве определяет, указано ли направление в локальном преобразовании взрыва.
- Критическая масса определяет массу тела, не затронутого взрывом. Более тяжелые тела чувствуют себя менее эффектом, чем легкие тела. Например, жесткий объект, который весит одну треть критической массы , будет чувствовать себя две трети скорости изменения.
- Шкала импульса Angular определяет, где применяется сила. Если задано значение 0, принудительно применяется в центре массы, что означает отсутствие поворота. Если задано значение 1, то сила применяется в ближайшей точке к взрыву.
- Затронутые тела определяют необязательные условия фильтрации для тел, затронутых этим компонентом. (По умолчанию все тела затронуты.)
Стабилизация суставов
Стабилизирует систему ограничений путем корректировки тензора инерции жесткого человека.
Сценарий работает со всеми дочерними элементами с присоединенным компонентом "Жесткое тело" или "Совместный".
Параметры:
- Фактор стабилизации определяет, сколько вы жертвуете физической правильностью для стабильности. Например, 1 -> в основном физика правильная, 4 -> компрометация, 10 -> стабильная с артефактами.
- Совместная проекция обеспечивает проекцию ограничений на всех дочерних элементах. Это может значительно улучшить стабильность, но жертвует физической правильностью. Он работает только на настраиваемых и символьных соединениях.
- Расстояние проекции определяет максимально допустимое нарушение ограничений. Чтобы избежать проблем с физикой, попробуйте установить это значение как можно более высоко.
Bouncing Surface
Создает отскочивание поверхности, которая приводит ко всем объектам, которые сталкиваются с предопределенной скоростью.
Параметры:
- Величина скорости отскока определяет минимальную и максимальную величину скорости объекта после отскока. См . сведения о том, как определяется направление. Задайте значение Min и Max равным, если требуется указать одну целевую скорость.
- Эффект bounce определяет предполагаемое поведение отскоки объектов.
- Идеальный отказ: угол входящего скорости к нормальной плоскости столкновения совпадает с углом исходящей скорости.
- Задать величину скорости: угол исходящей скорости к нормальной влияет на трение.
- Установка нормальной скорости: аналогично настройке величины скорости, но величина скорости отскока определяет величину перпендикулярной к плоскости (обычная скорость).
- Отскочить к целевому телу: направление исходящей скорости направляется к целевому телу. Если этот параметр выбран, появится свойство Target Body и должно быть задано.
- Трение управляет тем, сколько тангенциальной скорости теряется при столкновении. Если задано значение 0, объект отскоки сохраняет тангенциальную скорость. Если задано значение 1, объект отскочил в направлении перпендикулярно к поверхности (тангенциальная скорость составляет 0). Для значений более 1 объект отскочил назад.
Центр смещения массы
Смещает центр массы жесткого.
Параметры:
- Смещение в локальных координатах определяет смещение в локальных координатах.
Область локальной физики
Все жесткие тела в иерархии в этом компоненте не будут синхронизированы между клиентами. Этот скрипт следует добавить в жесткие тела, позиции или повороты которых задаются с помощью визуального скрипта или анимации.
Узнайте о узлах событий физики визуального скрипта сетки.
Бросить траекторию
Вычисляет будущее положение жесткого человека в свободном пространстве под воздействием гравитации.
Параметры:
- Режим жесткого объекта: если задано значение true, позиция жесткого и скорости принимаются в качестве начальных условий. Включает вычисление будущих позиций в режиме реального времени.
- Жесткое тело (применяется только в том случае, если для жесткого режима задано значение true.): определяет, какой жесткий тело принимается.
- Начальная скорость: (применяется только в том случае, если для жесткого режима задано значение false): определяет начальную скорость. Начальная позиция берется из позиции GameObject, к которому присоединен этот компонент.
- Максимальное число точек: определяет максимальное количество вычисляемых точек.
- Шаг времени. Определяет разницу времени между будущими позициями.
- Гравитация: это гравитационное ускорение.
- Отрисовщик строк: указывает отрисовщик строк положение точек копируются в. Отображается траектория броска.
Сброс преобразований текста
При активации визуального скрипта этот компонент сбрасывает положение и поворот всех физических тел на одном преобразовании или любые дочерние преобразования в их начальные значения.
Параметры:
- Начальное автоматическое сохранение: если выбрано, используйте преобразования при запуске среды в качестве преобразования сброса. Если не выбрано, перед выполнением сброса необходимо использовать визуальный скрипт, чтобы вызвать функцию "Сохранить преобразование тела", чтобы сохранить преобразования сброса.
Функции, доступные визуальным скриптам
- Сброс преобразований тела: сбрасывает положение и поворот всех физических тел в области этого компонента преобразования тела сброса до последних сохраненных преобразований сброса. Вызовите это только на одном клиенте.
- Сохранение преобразований тела теперь сохраняет текущее положение и поворот всех физических тел в области этого компонента преобразования тела сброса в качестве их преобразований сброса. Вызовите это только на одном клиенте.