关闭

Unity四种坐标系

368人阅读 评论(0) 收藏 举报
分类:

一 World Space(世界坐标):

我们在场景中添加物体(如:Cube),他们都是以世界坐标显示在场景中的。transform.position可以获得该位置坐标。


1. 代码获取的transform.position都是一致的

无论是3d还是2d,ugui/ngui,父子关系,transform.position都是以场景中心(0,0)的位置开始计算,单位长度也都是一样的。

x轴:左负右正

y轴:上正下负

z轴:里正外负

无论怎样的UI,怎样的层级关系,代码里输出Debug.log(go.transform.position),输出的总是相对于场景中心(0,0)的距离,也是获取世界坐标的方法。


2. 检视面板的position数值和代码获取的position数值不一致

ngui和ugui的Transform和Recttransform的position显示的数值和代码里获取的transform.position不一致。

ugui btn代码位置position=new Vector(1,0,0),面板显示(31.3,0,0)

ngui btn代码位置position=new Vector(1,0,0),面板显示(371,0,0)

具体比例不是很清楚,可能和测试环境有关。


3. 父子关系的容器,检视面板position和代码获取position不一致

cube和ngui/ugui的子对象的Transform/Recttansform在检视面板中显示的Position数值是相对于父容器的,

但是代码里获取的Transform/RectTransfrom的position是相对于场景中心的。

获取世界坐标:go.transform.position

获取本地坐标:go.tranfrom.localPosition   (cube/ngui/ugui,无论层级关系,都是获取的是检视面板中的坐标)

可推断ugui/ngui都是在场景中的一个容器之中,所以检视面板显示的都是相对于父容器的坐标,而不是世界坐标。


二 Screen Space(屏幕坐标):

以像素来定义的,以屏幕的左下角为(0,0)点,右上角为(Screen.width,Screen.height),Z的位置是以相机的世界单位来衡量的。


鼠标位置Input.mousePosition获取的是屏幕坐标。

例如场景分辨率1024x768,如果屏幕被缩小至100x100,那么点击右上角是100x100,而不是分辨率的1024x768。


三 ViewPort Space(视口坐标)

视口坐标是标准的和相对于相机的。相机的左下角为(0,0)点,右上角为(1,1)点,Z的位置是以相机的世界单位来衡量的。


四 绘制GUI界面的坐标系:

这个坐标系与屏幕坐标系相似,不同的是该坐标系以屏幕的左上角为(0,0)点,右下角为(Screen.width,Screen.height)。


坐标转换:

世界坐标 -> 本地坐标:貌似不用转,直接可以position和localPosition获取。

本地坐标 -> 世界坐标:

世界坐标→屏幕坐标:camera.WorldToScreenPoint(transform.position);这样可以将世界坐标转换为屏幕坐标。其中camera为场景中的camera对象。

屏幕坐标→视口坐标:camera.ScreenToViewportPoint(Input.GetTouch(0).position);这样可以将屏幕坐标转换为视口坐标。其中camera为场景中的camera对象。

视口坐标→屏幕坐标:camera.ViewportToScreenPoint();

 视口坐标→世界坐标:camera.ViewportToWorldPoint();


父子对象关系:

SetParent(Transform parent, bool worldPositionStays);

false:不保留世界坐标。改变层级关系后,坐标数值不变,位置变化,会相对于父对象移动。

true(默认):世界坐标不变。改变层级关系后,不会移动。

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Unity3D中的四种坐标坐标系

Unity3D中的四种坐标系
  • MagicXK
  • MagicXK
  • 2016-06-18 15:54
  • 6130

Unity四种坐标系

一 World Space(世界坐标): 我们在场景中添加物体(如:Cube),他们都是以世界坐标显示在场景中的。transform.position可以获得该位置坐标。 1. 代码获取的tran...
  • dreamsnow127
  • dreamsnow127
  • 2015-03-09 15:39
  • 17323

Unity3D的几种坐标系

World Space(世界坐标):我们在场景中添加物体(如:Cube),他们都是以世界坐标显示在场景中的。transform.position可以获得该位置坐标。           &#...
  • pizi0475
  • pizi0475
  • 2016-02-01 11:35
  • 909

Unity四种坐标系

转载出处:http://blog.csdn.net/dreamsnow127/article/details/44155509 一 World Space(世界坐标): 我们在...
  • u010779707
  • u010779707
  • 2016-10-07 22:23
  • 444

Unity四种坐标系及转换

一 World Space(世界坐标): 我们在场景中添加物体(如:Cube),他们都是以世界坐标显示在场景中的。transform.position可以获得该位置坐标。 1. 代码获取的t...
  • dk_0520
  • dk_0520
  • 2016-12-28 11:47
  • 1620

Unity中四种坐标系之间的关联

一 World Space(世界坐标): 世界坐标按照笛卡尔坐标系定义出来的绝对坐标系,下面的各种坐标系都建立在世界坐标的基础上。我们知道二维平面内任意一个点可以用二维坐标(x,y)来表示,如果将这...
  • qq_36236862
  • qq_36236862
  • 2017-12-13 23:15
  • 15

Unity 中的坐标系

参考 一、基础 1、什么是坐标系 坐标系的定义是:对于一个n维系统,能够使每一个点和一组(n个)标量构成一一对应的系统。 在这篇博客中,我们讨论的特指欧几里德三维空间中的坐标系。对于这样的三维空...
  • ronintao
  • ronintao
  • 2016-08-17 16:20
  • 7913

unity的几种坐标系及他们之间的转换

在谈unity各种坐标系之前,我一直很好奇unity为什么要有这么多坐标系搞的很麻烦,其实unity这么坐标系是为了解决麻烦,试想计算你和你同桌的位置,要先得到你们各自在世界中的位置,然后在计算相对位...
  • bouquet12138
  • bouquet12138
  • 2017-02-26 19:15
  • 1050

u3d坐标系详解

1.unity3d中的坐标系 1)World Space(世界坐标):标准的D3D左手坐标系,旋转方向是左手法则包括法向量方向,背面剔除逆时针的。我们在场景中添加物体(如:Cube),他们都是以世界坐...
  • Blues1021
  • Blues1021
  • 2015-10-09 23:30
  • 7185

说说Unity3D里的各种坐标系

今天博主想和大家聊聊unity3D中各种坐标系。自从Unity4.6版本推出uGUI后,unity3d坐标系的大家庭中便增加了RectTransform这个新成员,如果你不想被各种坐标系搞得晕头转向的...
  • KingSea168
  • KingSea168
  • 2015-11-03 08:27
  • 4791
    个人资料
    • 访问:33308次
    • 积分:400
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:40篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档