本人学生一枚,刚接触Unity3D,若有理解得不对的地方,还望各路大神不吝赐教~

unity中的坐标系统包括世界坐标(World Space),屏幕坐标(Screen Space),视口坐标(View Space)以及GUI坐标系统。

世界坐标(World Space)

场景中添加的对象,它们是以世界坐标显示在场景中,可以通过代码transform.position获得该对象的世界坐标,那么我们在检视面板(Inspector)中看到的Position的值在对象没有父物体时,这个值和transform.position得到的结果一致的,若该对象有父物体,那么检视面板中(Inspector)看到的即为相对于父物体的相对坐标位置,这样通过transform.position得到的值自然就不一样了。总之,通过transform.position得到的都是对象的世界坐标。在对象存在父物体的情况下,若想要得到该对象在检视面板(Inspector)中的值,可以通过transform.Localposition得到。

  屏幕坐标(Screen Space)

屏幕坐标是通过像素来定义的,屏幕坐标的坐标系以屏幕左下角为(0,0)点,右上角为(Screen.width,Screen.height),屏幕坐标为3维坐标,z的大小由相机的世界位置来定义。通过Input.mousePosition得到的是屏幕坐标,屏幕坐标的数值只与屏幕的大小有关,跟分辨率没有关系。

 视口坐标(View Space)

视口坐标标准化后的屏幕坐标,它的坐标原点同样是左下角为(0,0)点,只不过右上角为(1,1)点,若对象处在场景的正中间,则对象的视口坐标为(0.5,0.5),与屏幕坐标一样,视口坐标也是一个3维的,它的z方向的数值由相机的世界位置来决定。

GUI坐标系

GUI坐标系主要在通过OnGUI方法绘制屏幕UI界面时运用较多,GUI坐标系是一个2维坐标系,与屏幕空间类似,所表示的范围也是整个屏幕空间范围,只不过GUI坐标的坐标原点在左上角,即左上角为(0,0)点,右下角为(Screen.width,Screen.height)。

     坐标之间的转换

世界坐标通过transform.position获得

局部坐标通过transform.Localposition获得

世界坐标与屏幕坐标之间的转换

Camera.main.ScreenToWorldPoint(Vector 3)  ——屏幕坐标转换到世界坐标,其中的main为主相机,当然也可以为场景中其他相机

Camera.main.WorldToScreenPoint(transform.position)——世界坐标转换到屏幕坐标 ,其中的main为主相机,当然也可以为场景中其他相机。这里附带一个鼠标拖拽物体的代码,其中主要就是世界坐标与屏幕坐标之间转换

unity------各种坐标理解的更多相关文章

  1. Unity 本地坐标到世界坐标,世界坐标到本地坐标

    世界=>本地 public GameObject mTarget; public GameObject mPar; //这个注意一定要是mTarget的第一父物体. // Use this fo ...

  2. 【Cesium】坐标理解(转)

    https://blog.csdn.net/qq_34149805/article/details/78393540 1. 经纬度转换为世界坐标 第一种方式:直接转换: Cesium.Cartesia ...

  3. 【Unity3D基础教程】给初学者看的Unity教程(三):通过制作Flappy Bird了解Native 2D中的Sprite,Animation

    作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 引子 上一次我们讲了MonoBehaviou ...

  4. unity射线碰撞检测+LayerMask的使用

    射线在unity中是个很方便的东西,对对象查找.多用于碰撞检测(如:子弹飞行是否击中目标).角色移动等提供了很大的帮助,在此做个总结与大家分享下 ,若有不足欢迎吐槽 好了,话补多说啦,直接进入主题: ...

  5. Unity 相关经典博客资源总结(持续更新)

    就作为一个记录吧,把平时看过的Unity相关的一些好的Blog记录并分享. 好的论坛: Unity官方脚本  点评:这个不用说了,最核心的内容,理解整个Unity引擎的方方面面,梳理结构. Unity ...

  6. Unity中Mesh分解与边缘高亮加上深度检测

    一个比较简单的需求,不过遇到些坑,记录下. 房间有多个模型,每个模型可能多个SubMesh,点击后,需要能具体到是那个SubMesh,并且在这个SubMesh上显示边缘高光,以及能个性这单个SubMe ...

  7. 【转】Unity 相关经典博客资源总结(持续更新)

    原文:http://blog.csdn.net/prothi/article/details/20123319 就作为一个记录吧,把平时看过的Unity相关的一些好的Blog记录并分享. 好的论坛: ...

  8. Unity之MVC 模式

    MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发. Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO.它 ...

  9. C#开发Unity游戏教程之游戏对象的行为逻辑方法

    C#开发Unity游戏教程之游戏对象的行为逻辑方法 游戏对象的行为逻辑——方法 方法(method),读者在第1章新建脚本时就见过了,而且在第2章对脚本做整体上的介绍时也介绍过,那么上一章呢,尽管主要 ...

随机推荐

  1. 《深入应用C++11:代码优化与工程级应用》开始发售

    我的新书<深入应用C++11:代码优化与工程级应用>已经开始在华章微店发售了,下面是链接. 京东发售链接 china-pub发售链接 亚马逊发售链接 天猫商城发售链接 适用读者:C++11 ...

  2. win8共享文件设置 详细教程

    1.开放防火墙445端口 2.进入组策略,依次进入 从网络访问计算机 属性里--添加-Guest 3.进入 然后把里面的用户清空 4.打开网络和共享中心,关闭密码保护共享

  3. 7个华丽的基于Canvas的HTML5动画

    说起HTML5,可能让你印象更深的是其基于Canvas的动画特效,虽然Canvas在HTML5中的应用并不全都是动画制作,但其动画效果确实让人震惊.本文收集了7个最让人难忘的HTML5 Canvas动 ...

  4. 解决opencv和mfc同时使用导致memory leak

    参考资料:http://blog.csdn.net/lujin0312/article/details/42214467 最彻底的解决办法就是把用到opencv的部分做成dll,且这个dll中不出现跟 ...

  5. jetty debug修改 java static 静态变量值不会生效

    在jetty debug模式下修改static静态变量值不会重新Load 因为jetty是嵌入式web容器,static静态变量是全局的,如果想生效,就必须重启jetty 在热部署的时候tomcat会 ...

  6. pandas的连接函数concat()函数

        pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,   keys=None, levels=No ...

  7. 使用线性回归识别sklearn中的手写数字digit

    从昨天晚上,到今天上午12点半左右吧,一直在调这个代码.最开始训练的时候,老是说loss:nan 查了资料,因为是如果损失函数使用交叉熵,如果预测值为0或负数,求log的时候会出错.需要对预测结果进行 ...

  8. Liunx下Intel无线网卡驱动安装

    原文: https://blog.csdn.net/u014157776/article/details/78272611 首先查看网卡型号,指令: lspci | grep -i net 如果是In ...

  9. kafka0.10

    整理kafka相关的常用命令创建主题(4个分区,2个副本)bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-f ...

  10. MongoDB阅读精要

    部署:MongoDB服务端可运行在Linux.Windows或IOS平台,支持32位和64位应用,默认端口为27017.推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2 ...