Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Joint.massScale

public float massScale;

Описание

Шкала, применяемая к обратной массе и тензору инерции тела перед решением ограничений.

Масштабируйте массу и тензор инерции, чтобы решатель суставов сходился быстрее, что приводит к меньшему растяжению конечностей типичной тряпичной куклы. Наиболее полезно в сочетании с Joint.connectedMassScale.

Например, если у вас есть два объекта в тряпичной кукле с массами 1 и 10, физический движок обычно разрешает соединение, изменяя скорость более легкого тела намного больше, чем более тяжелого. Применение шкалы масс 10 к первому телу заставляет решатель изменять скорость обоих тел на одинаковую величину. Применение масштабов масс таким образом, чтобы сустав воспринимал аналогичные эффективные массы и инерции, ускоряет сходимость решателя, что может сделать отдельные суставы менее эластичными или разделенными, а наборы сочлененных тел - менее дергаными

Обратите внимание, что масштабирование массы и инерции принципиально нефизично, и импульс не сохраняется.

Следующий скрипт полезен для настройки масштабирования массы и инерции, чтобы получить одинаковую корректирующую скорость от решателя. Прикрепите его к корню тряпичной куклы или к конечности, которая чрезмерно растянулась во время игры, и он найдет все суставы в иерархии преобразования ниже себя и отрегулирует масштаб массы.

using System.Collections; using System.Collections.Generic; using UnityEngine; public class NormalizeMass : MonoBehaviour { private void Apply(Transform root) { var j = root.GetComponent<Joint>(); // Apply the inertia scaling if possible if (j && j.connectedBody) { // Make sure that both of the connected bodies will be moved by the solver with equal speed j.massScale = j.connectedBody.mass / root.GetComponent<Rigidbody>().mass; j.connectedMassScale = 1f; } // Continue for all children... for (int childId = 0; childId < root.childCount; ++childId) { Apply(root.GetChild(childId)); } } public void Start() { Apply(this.transform); } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3