TransformPoint的意义和使用场景

意义:将距离本物体一定距离(或子物体很少用到此处,因子物体可以直接用transform.position得到其世界坐标的,此函数用到其它任意点才有意义)的任意点的相对坐标转换为世界坐标

Vector3 WorldPosition = gameObject.transform.TransformPoint(xdistance, ydistance, zdistance);

得到的WorldPosition为相对于本物体(父物体)在三个方向上距离分别为(xdistance, ydistance, zdistance)的点(localPosition为(xdistance, ydistance, zdistance)的子物体)的世界坐标。它考虑了父物体的旋转和缩放,不管父物体有没有旋转和缩放尽管放心用,一句话就可以得到正确的世界坐标。

 代码挂载父物体cube上:

Vector3 WorldPosition = gameObject.transform.TransformPoint(1, 1, 2);
        Debug.Log($"世界坐标是{WorldPosition}");

测试实例1无旋转无缩放,坐标如下:

 

测试实例2父物体cube仅有旋转时

 测试实例3父物体cube仅有缩放时

 

 测试实例4父物体cube有旋转和缩放时

 

 由上可知所有情况都可直接用TransformPoint得到相对于本物体一定距离的任意点的世界坐标