Как перестать вращать суб ребенка в мире 3d - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть три игровых объекта A, B и C. A является родителем B, а B является родителем C. А - это твердое тело и главный движущийся объект. B является жестким трансформируемым объектом, который постоянно вращается от 0,0,0 до 0,0,45. Я хочу, чтобы при вращении B дочерний элемент B C также вращался, но его локальная ось y должна быть 0 (заблокирована). Например, каждый стеклоочиститель старых школьных автобусов также имеет вспомогательный стеклоочиститель, когда основной стеклоочиститель перемещается, вспомогательный стеклоочиститель также перемещает шину, его ось остается вертикальной. Это то, что я хочу. Плз любая помощь тела ...

enter image description here

Ответы [ 2 ]

0 голосов
/ 21 февраля 2020

Самое простое решение - просто заставить объект C обновить свое вращение так, чтобы transform.up всегда было одинаковым значением.

Vector3 upDir;

void Awake() 
{
    upDir = transform.up;
}

void Update()
{
    transform.up = upDir;
}

Если вы хотите, чтобы его вращение было таким же, как у бабушки и дедушки, просто установите его вращение равным вращению бабушки и дедушки:

transform aTransform;

void Awake()
{
    aTransform = transform.parent.parent;
}

void Update()
{
    transform.rotation = aTransform.rotation;
}
0 голосов
/ 21 февраля 2020

Подумайте над тем, чтобы прикрепить к скрипту стеклоочистителя следующее:

Vector3 desiredRotation;

void Update()
{
    transform.rotation = Quaternion.Euler(desiredRotation + new Vector3(0.0f, 0.0f, transform.parent.rotation.z * -1.0f));
}

Это меняет направление вращения ребенка на противоположное вращению родителя. Если основной стеклоочиститель переместится на 90 градусов, вспомогательный стеклоочиститель будет вращаться на -90 градусов, чтобы противостоять ему.

Если вы хотите повернуть вспомогательный стеклоочиститель в дополнение к этому, вы измените желаемое вращение.

Это решение позволяет вам "игнорировать" вращение прямого родителя, но вы все равно будете следить за вращением бабушки и дедушки. Если бы у вас были стеклоочистители на автомобиле, если машина перевернулась вверх дном, вспомогательный стеклоочиститель не должен оставаться фиксируется вверх, но все равно должен вращаться вместе с автомобилем. Автомобиль дедушка .

...