Unity学习笔记(1)—本地坐标转世界坐标

Unity学习笔记(1)—本地坐标转世界坐标

先简单介绍一下我是一个程序员(菜鸟程序员),用C#开发,在开发的过程中会遇到一些问题,当时解决了但是在遇到可能还会在犯,所以启发我做这样一个学习笔记系列,一来是希望能够督促自己总结学习,二来是可以在变身之路上认识志同道合的朋友们一起成长,我写的不对的地方还望朋友们能够指出来,有什么问题可以留言,我们可以一起思考共同进步。
上周我在写UI组件的时候的时候遇到一个问题——UI界面的坐标和世界坐标之间的转换。今天我就先谈谈这个问题好了,其实主要是两个方法。我们今天想说说本地坐标到世界坐标吧

  • 从自身坐标到世界坐标

来来来,先看看代码是怎么写的吧

 public Transform testTra ;
    public Transform parentTra;
    Vector3 localPos;
    Vector3 worldPos;

    void Awake()
    {
        localPos = testTra.localPosition;
        worldPos = parentTra.TransformPoint(localPos);
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.A))
        {
            Debug.Log("localPos:" + localPos + "worldPos:" + worldPos);
        }
    }

核心用到的方法就是transform.TransformPoint( )

这个方法的返回值就是Vector3类型的世界坐标,transform就是相对的物体,括号里的就是相对这个transform的本地坐标,比方说我现在的位置吧,知道我相对于我的邻居的坐标:Pos1,和我相对于小区的坐标Pos2,转换成世界坐标,结果是一样的,怎么做呢?一种表示方法就是:我的邻居.TransformPoint(Pos1)这样能返回我的世界坐标,还有一种:小区.TransformPoint(Pos2)这样也能取得我的世界坐标。

看下图我穿件出来的一个红色的小球和一个平面

红色小球的坐标

平面的坐标

看右边的坐标,我把小球放到了平面的里面,红色小球相对于平面的位置是(-2, 0, 0), 白色平面的位置是(2, 0, 0)
在看一下最后书按下A输出的本地坐标是世界坐标分别是(-2, 0, 0)和(0, 0, 0)正确。本地坐标转世界坐标就是这么用的。

下一次我在说说世界坐标是怎么转换成本地坐标的。

猜你喜欢

转载自blog.csdn.net/u011080048/article/details/52904259