Добрый день!
Есть контроллер персонажа, внутри него аниматор и добавлен ragdoll.
Когда активируется ragdoll то его тело начинает падать само и позиция родительского объекта и тела начинает отличаться. В итоге после падения например с высоты, сами кости с телом лежат далеко от объекта контроллера персонажа(где rigidbody).
И тут вопрос, как обновлять позицию родительского объекта, чтобы она следовала за своим скелетом?
Если напрямую выставлять ему глобальную позицию ребенка, то все куда то улетает.
Думаю есть правильный вариант для такой ситуации, но я его не знаю (подождем знающих). Пока могу предложить вариант когда мы изначально знаем что кукла внутри отличается по координатам допустим на вектор (0, 0.25, 0). От балды написал.
Тогда при активации риджит бади смотрим у ребенка его transform.localPosition, отнимаем известный ранее вектор (или возможно складываем?) и добавляем это к координатам родителя, а потом сразу же делаем локальные координаты ребенка равные тому вектору (или нулю если изначально в нуле и был внутри родителя).
Ну и делаем это соответственно де то в апдейте или типа того. Но опять же звучит как костыль.
manking
- отлинковываем child от root
- меняем позицию для root
- заново линкуем child к root
Тут лучше задать вопрос: "Зачем это нужно?"
Чтобы найти наиболее простое решение, соответсвующее поставленной задаче.
Нужно для коррекции позиции контроллера персонажа в состоянии ragdoll.
Он улетает от родителя.
Насколько понял правильней вообще ragdoll отдельно создавать, а не прямо в основном персонаже?
То есть есть основной аниматор, а есть кости с колладерами, которые под действием физики перемещаются. А внешний вид аниматора уже затем выставляет свои позиции в позиции соответствующей кости?