Сохраняя вращение одной оси и выравнивая другие к родителю

У меня проблема с блокировкой одной оси. У меня есть два инструмента, которые я могу использовать, чтобы захватить этот макет иглы, как объект.

Захват инструмента " игла"

Мне просто нужно иметь возможность держать его вращение вокруг себя (локальный y) и выровнять остальные с вращением инструмента. В настоящее время, однако, я могу только выяснить, как вращать все оси, как так:

Инструмент, схвативший "иглу""

Код выглядит так::

 case 1:
 this.transform.rotation = leftParent.transform.rotation;
 this.transform.SetParent (leftParent);
 break;
 case 2:
 this.transform.rotation = rightParent.transform.rotation;
 this.transform.SetParent (rightParent);
 break;

Что я пробовал:

  • С помощью.Установите как локальное, так и глобальное вращение, сохраняя вращение y и / или w
  • = новый кватернион как локальное и глобальное вращение, сохраняя y и / или w
  • Вращать иглу после соответствовать вращению родителя
  • Вращать иглу после воспитывать ее

Пожалуйста, дайте мне знать, если есть что-то очевидное, что я пропустил. Спасибо!

1 ответ

  1. Я думаю, что вы ищете трансформацию.localRotation или Tranform.localEulerAngles: вы можете найти больше о тех здесь .

    В вашем случае я сделаю что-то вроде этого (учитывая вашу геометрию объекта «рука», как ожидается) :

    case1 :
    //Adjust the rotation you want to keep here (I assume on Y axis in your case)
    transform.SetParent(leftParent);
    transform.localEulerAngles = new Vector3(0.0f, transform.localEulerAngles.y, 0.0f);
    break;
    case2 :
    //Adjust the rotation you want to keep here (I assume on Y axis in your case)
    transform.SetParent(rightParent);
    transform.localEulerAngles = new Vector3(0.0f, transform.localEulerAngles.y, 0.0f);
    break;
    

    Кстати, thisключевое слово в вашей ситуации не нужно, так transformкак только относится к преобразованию, на котором прикреплен скрипт.