美文网首页
Unity中的坐标转换

Unity中的坐标转换

作者: Joe_Game | 来源:发表于2018-09-22 16:38 被阅读0次

    前言:

    最近项目中用到了很多自身坐标与世界坐标的转换,写代码的时候发现自己对于这部分的知识还不够清晰,故记下此文。


    不同的坐标系

    一、世界坐标

    • 以世界空间下的原点的坐标系
    • 通过transform.position调用
    • 如果没有父物体,检视面板显示的就是世界坐标

    二、自身坐标(又叫本地坐标)

    • 以父物体空间为原点的坐标系
    • 通过transform.localposition调用
    • 如果有父物体,检视面板显示的就是自身坐标

    三、屏幕坐标

    • 以屏幕左下角为原点的二维坐标系.以屏幕的左下角为(0,0),右上角为(Screen.width,Screen.height)
    • 坐标的右上角的值根据游戏视图的屏幕分辨率来决定
    • 获取的鼠标坐标就是屏幕坐标(Input.mousePosition)

    四、视口坐标

    • 以屏幕左下角为原点的二维坐标系,左下角是(0,0),右上角是(1,1),是一个归一化的值
    • Z轴是世界坐标的Z轴
    • 多用来过渡转换坐标,如世界坐标转屏幕坐标:先从世界坐标转视口坐标,再从视口坐标转屏幕坐标

    五、GUI坐标

    • 以屏幕左上角为原点的二维坐标系,左上角是(0,0),右下角是(Screen.width,Screen.height)

    六、桌面坐标

    • 以左上角为原点的二维坐标系,左上角是(0,0),右下角是(桌面分辨率的宽,桌面分辨率的高)
    • 用SetCursorPos设置鼠标坐标,用GetCursorPos得到鼠标坐标。

    不同的坐标系之间的转换

    一、自身转世界

    • 世界坐标 = Transform对象.TransformPoint(自身坐标)

    二、世界转自身

    • 世界坐标通过把父物体设置为想要成为的自身坐标的父物体,得到的就是这个世界坐标转化后的自身坐标

    三、世界转屏幕

    • 通过调用Camera.main.WorldToScreenPoint()
    • Unity底层是从世界转视口,再从视口转屏幕

    四、世界转视口

    • 通过调用Camera.main.WorldToViewPort()

    五、视口转屏幕

    • 通过调用Camera.main.ViewportToScreenPoint()
    • 视口坐标乘以屏幕分辨率(Screen.width和Screen.hight)也可从视口坐标转为屏幕坐标

    六、屏幕转视口

    • 通过调用Camera.main.ScreenToViewportPoint()

    七、视口转世界

    • 通过调用Camera.main.ViewportToWorldPoint()

    相关文章

      网友评论

          本文标题:Unity中的坐标转换

          本文链接:https://www.haomeiwen.com/subject/xnqxoftx.html