Вопрос:
Уже более двух дней я борюсь с этой, казалось бы, невозможной проблемой: у меня есть составной GameObject (один родитель, 10 детей), каждый из которых шарнирно привязан, по крайней мере, к другому с ограничениями угла и двигателями с управляемым двигателем. Движется отлично, как я желаю. Теперь я хочу, чтобы его можно было перевернуть. Через некоторое время и во многих испытаниях вращение кажется лучшим способом для сохранения углов (инвертирование localSpace не учитывает их):
Vector3 rotPoint = new Vector3 (ParentGameObject.transform.position.x, myY, myZ); ParentGameObject.transform.rotateAround (rotPoint, Vector3.up, 180.0f);
НО, если родитель вращается, как задано (180 градусов вокруг его оси Y), каждый ребенок переворачивается, но не вокруг одной и той же оси, а не вокруг своего собственного центра вращения. Это дает нелепые результаты, поскольку шарниры пытаются вернуться в нужную позицию. Как я могу это исправить? Большое спасибо заблаговременно…
Лучший ответ:
В конце концов я понял проблему. У моей проблемы не было никакого важного решения.
Мы можем вращать преобразование вокруг оси Y даже в 2D, но НЕ твердое тело 2D, которое в одном и том же объекте неизбежно вызовет серьезные проблемы.
Возможно, это одна из оставшихся несогласованностей с реализацией 2D Unity5. Мне пришлось перевернуть с помощью localScale-инверсии и программно обновленных позиций и поворотов.
Ответ №1
Это звучит как ребенок GameObjects вращаются вокруг своих собственных стержней, а не родителей. На данный момент у меня нет Unity, чтобы проверить это, но если вы добавите пустой GameObject в качестве дочернего элемента вашего родителя (и с той же точкой опоры), тогда сделайте все ваши другие GameObjects дочерними, из которых он должен работать.,
Ответ №2
Вы не должны перемещать или поворачивать жесткое тело, если вам это не нужно. Это испортит основные вычисления физики, и физики не будут этому довольны. Вместо этого у вас есть другие способы взаимодействия с ними
- Применить силу, крутящий момент
- Применить ускорение, угловое ускорение
- Скорость изменения, угловая скорость
Если вам нужно перемещать/вращать объект, вы также должны обновлять позиции, вращения, скорости, угловые скорости всех ваших шарнирных объектов. Это было бы нелегко. Дайте несколько подробностей, если вы не можете решить.