什么对象变换 TransformPoint() 重要吗?方法附加到,因为它应该返回世界空间位置?例如给出以下结构:
对象1
- ChildObj1
对象2
执行 Obj1.transform.TransformPoint(Obj2.transform.position)
应该返回与 ChildObj1.transform.TransformPoint(Obj2.transform.position)
相同的结果,无论Obj1 和 ChildObj1 的位置。
这是正确的吗?如果是这样,我错过了什么?为什么 TransformPoint 必须附加到对象的变换上?
最佳答案
TransformPoint接受一个 Vector3 并返回一个 Vector3。它所做的只是将一个点从本地空间转换为世界空间。由于您的示例显示 Obj2 不是 Obj1 的子项,因此可能会产生混淆。
让我们说以下内容:
- Obj1 位于世界位置 (5,0,0)
- ChildObj1 在世界位置中位于 (8,0,0),在本地位置中位于 (3,0,0)(因为它比 Obj1 高 3 个 x 单位。
- 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 是根对象 (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)
关于c# - TransformPoint() 方法附加到哪个对象的变换重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59885462/