zoukankan      html  css  js  c++  java
  • unity------各种坐标理解

    本人学生一枚,刚接触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中的CG编写Shader系列4——unity中的圆角矩形shader
    [转]解读Unity中的CG编写Shader系列5——理论知识
    [转]解读Unity中的CG编写Shader系列3——表面剔除与剪裁模式
    [转]解读Unity中的CG编写Shader系列二
    [转]解读Unity中的CG编写Shader系列1——初识CG
    使用 GPU 加速计算
    [转] Draw Call未被批处理?告诉你在Unity 5.6中如何查找原因 [复制链接]
    程序员,如何从平庸走向理想?
    SDUT-2122_数据结构实验之链表七:单链表中重复元素的删除
    SDUT-2121_数据结构实验之链表六:有序链表的建立
  • 原文地址:https://www.cnblogs.com/w-wfy/p/7297371.html
Copyright © 2011-2022 走看看