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)