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得到相对于本物体一定距离的任意点的世界坐标