Unity的坐标系

3D坐标系,表示的是三维空间,它存在着三个坐标轴,分别是X轴,Y轴,Z轴。3D坐标系分为左手坐标系和右手坐标系。左手坐标系就是Y轴指上方,X轴指向右方,而Z轴指向前方;而右手坐标系和左手坐标系的X轴和Y轴志向相同,Z轴的方向正好相反。便于理解:大拇指指向的方向就是Z轴的方向,四指弯曲的方向就是从X轴到Y轴的方向,左右手都可以这样判断。
在这里插入图片描述
1.世界坐标(World Space)
Unity引擎的左手坐标系也被称为世界坐标系,在默认情况下,局部坐标和世界坐标系的原点是重合的,不能把所有的模型都叠加在世界坐标系的原点上,因此需要移动模型。模型移动时就会发生模型的局部坐标到世界坐标的转换,这个移动的过程就是把模型的局部坐标转化为世界坐标。知识这个转化的过程是在引擎编辑器内部实现的,实际上就是将模型的各个点与世界矩阵相乘得到。
X轴:左负右正;Y轴:上正下负;Z轴:里正外负。
transform.position就是获取到当前物体的世界坐标的位置。
tranform.localPosition获取到的是当前模型的局部坐标。
2.屏幕坐标(Screen Space)
Unity开发的移动端手游经常会用到屏幕坐标系,屏幕坐标系就是通常使用的电脑屏幕,它是以像素为单位的,屏幕左下角(0,0)点,右上角为(Screen.Width,Screen.Height)点,Z的位置是根据相机的Z缓存值确定的。通常使用鼠标在屏幕上单机物体,它就是屏幕坐标系。通过Input.mousePosition可以获得鼠标位置的坐标。对虚拟摇杆的滑动可以通过Input.GetTouch(0),position获取到手指触碰屏幕的坐标。对UI的操作以及单机3D物体发射射线判断是否选中物体也是基于屏幕坐标系的。
3.相机坐标(ViewPort Space)
通过相机才能看到虚拟世界的物体。相机有自己的视口坐标,物体要转换到视口坐标才能被看到。相机的视口左下角为(0,0)点,右上角为(1,1)点,z的位置是以相机的世界单位来衡量的。(0,0)点和(1,1)点是通过公式进行缩放计算的。
4.坐标转换
获取物体位置的通常写法是transform.position,它表示的是立方体在3D世界中的世界坐标的位置。如果使用的是触摸屏幕,那么可以通过函数Input.GetTouch(0).position获取到屏幕坐标系。
世界坐标和本地坐标可以直接从position和localPosition中获取;
世界坐标到屏幕坐标的转化:camera.WorldToScreenPoint(transform.position);
世界坐标到视口坐标的转化:camera.WorldToViewportPoint(obj.transform.position);
  屏幕坐标到视口坐标的转化:camera.ScreenToViewportPoint(Input.GetTouch(0).position);
  视口坐标到世界坐标的转化:camera.ViewportToWorldPoint(0.2f,0.3f,0);
  视口坐标到屏幕坐标的转化:camera.ViewportToScreenPoint(0.2f,0.3f,0);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值