Стабильность соединения и Ragdoll
Эта страница содержит советы по улучшению Соединение и Ragdoll стабильность.
- Избегайте малых углов соединения Угловой предел Y и Угловой предел Z. В зависимости от вашей установки, минимальные углы должны составлять от 5 до 15 градусов, чтобы быть стабильными. Вместо использования небольшого угла, попробуйте установить угол на нуль. Это блокирует ось и обеспечивает стабильную симуляцию.
- Снимите флажок Joint’s Включить предварительную обработку Отключение предварительной обработки может помочь предотвратить разделение или неправильное перемещение Соединений, если они вынуждены находиться в ситуациях, когда нет возможности удовлетворить ограничения Соединения. Это может произойти, если Rigidbody компоненты, соединённые Joint, растаскиваются статической геометрией столкновений (например, когда Ragdoll порождается частично внутри стены).
- При экстремальных обстоятельствах (таких как частичное размножение внутри стены или толчок с большой силой), решение соединения не в состоянии удержать Rigidbody компоненты Ragdoll вместе. Это может привести к растяжению. Чтобы справиться с этим, включите проекцию на соединения, используя либо ConfigurableJoint.projectionMode или CharacterJoint.enableProjection.
- Если Rigidbody компоненты, связанные с Соединения трепещут, открыть Физика окно (Изменить > Project Настройки, затем выберите Физика категории) и попытаться увеличить Итерации решателя по умолчанию значения между 10 и 20.
- Если Rigidbody компоненты, связанные с Соединения не точно реагируют на отскоки, открыть Физика окно (Изменить > Project Настройки, затем выберите Physics__category) и попробуйте увеличить По умолчанию скорость решения Итерации__ значение между 10 и 20.
- Никогда не обращайтесь напрямую к Transform у кинематических компонентов Rigidbody, соединённых с другими Rigidbody через Joint. Так вы пропускаете этап, на котором PhysX вычисляет внутренние скорости соответствующих Rigidbody, и решатель выдаёт нежелательный результат. Типичный пример плохой практики — прямое обращение к Transform в 2D-проектах, чтобы отзеркалить персонажа, изменяя Transform.TransformDirection на корневой кости платформы. Это ведет себя гораздо лучше, если вы используете Rigidbody2D.MovePosition и Rigidbody2D.MoveRotation вместо этого.
- Избегайте больших различий в массах между Rigidbody компонентами, соединёнными соединениями. Вполне нормально иметь один Rigidbody с массой в два раза больше, чем другой, но когда одна масса в десять раз больше, чем другая, симуляция может стать тревожной.
- Старайтесь избегать масштабирования, отличного от 1 в Transform, содержащем Rigidbody или в Соединении. Масштабирование может быть не надежным во всех случаях.
- Если компоненты Rigidbody перекрываются при вставке в мир, и вы не можете избежать перекрытия, попробуйте опустить Rigidbody.maxDepenetrationVelocity, чтобы компоненты Rigidbody выходили друг из друга более плавно.