美文网首页
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