Имеет ли значение, к какому объекту преобразовывается метод TransformPoint ()? - PullRequest
0 голосов
/ 23 января 2020

Имеет ли значение, к какому объекту преобразуется метод TransformPoint () , поскольку он должен возвращать позицию в мировом пространстве? Например, для следующей структуры:

  • Obj1

    • ChildObj1
  • Obj2

Выполнение Obj1.transform.TransformPoint(Obj2.transform.position) должно вернуть то же самое, что и ChildObj1.transform.TransformPoint(Obj2.transform.position) независимо от позиций Obj1 и ChildObj1.

Это правильно? Если так, что я пропускаю? Почему TransformPoint должен быть присоединен к преобразованию объекта?

1 Ответ

1 голос
/ 23 января 2020

TransformPoint принимает Vector3 и возвращает Vector3. Все, что он делает, это конвертирует точку из localSpace в WorldSpace. Так как ваш пример показывает, что Obj2 не является потомком Obj1, вероятно, возникнет путаница.

Скажем так:

  • Obj1 находится в (5,0,0) в Мировая позиция
  • ChildObj1 находится в положении (8,0,0) в Мировой позиции, что (3,0,0) в Местной позиции (потому что это на 3 x единицы выше, чем в Obj1.
  • Obj2 находится в положении (6,0,0) в Мировой позиции

Вот как код встряхивает для вышеупомянутого сценария:

Vector3 point1 = Obj1.transform.TransformPoint(Obj2.transform.position);  
//point1 = (11,0,0)
Vector3 point2 = ChildObj1.transform.TransformPoint(Obj2.transform.position) 
//point2 = (14,0,0)

Важная вещь, которую нужно отметить вот что transform.position возвращает мировую позицию. Если бы вы использовали transform.LocalPosition, где Obj2 является root объектом (localPosition = 0,0,0), то это будет результат:

Vector3 point1 = Obj1.transform.TransformPoint(Obj2.transform.localPosition);  
//point1 = (5,0,0)
Vector3 point2 = ChildObj1.transform.TransformPoint(Obj2.transform.localPosition) 
//point2 = (8,0,0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...