* 屏幕坐标系 Screen Space
** 标准定义:Screenspace is defined in pixels. The bottom-left of the screen is (0,0); the right-top is (pixelWidth,pixelHeight). The z position is in world units from the camera.
*** 以像素为单位
*** 原点左下角,右上角宽度screen.width和高度screen.height
** unity实现
*** 原点左下角,右上角宽度screen.width和高度screen.
**** 注意:Event.mousePosition原点在左上角,而不是坐下
height
*** 鼠标位置坐标属于屏幕坐标,input.mouseposition,是一个**三维向量**,z始终为0,可能是为了性能,不处理z。如果要精确,可以理解为z在视锥近平面cam.nearClipPlane。
*** 将世界坐标转换为屏幕坐标时,*Z是以世界单位衡量的到相机的距离*:摄像机对游戏世界的渲染范围是一个平截头体,渲染边界是一个矩形,用与near clippingplane或者far clippingplane平行的平面截取这个平截头体,可以获得无数个平行的矩形面,也就是我们看到的屏幕矩形。离摄像机越远,矩形越大,离摄像机越近,矩形越小。所以,同样大小的物体,随着离摄像机越来越远,相对于对应屏幕矩形就越来越小,所看起来就越来越小。在屏幕上,关键在于这个点在哪个截面上,也就是说,关键在于这个截面离摄像机有多远!*参数中的z坐标的作用就是:用来表示上述平面离摄像机的距离*。
**** Input.mouseposition移动到屏幕之外也会有值
*** 手指触摸屏幕也为屏幕坐标, 单手指input.gettouch(0).position,是一个**二维向量**
* 视口坐标系 ViewPort Space
** 标准定义:Viewport space is normalized and relative to the camera. The bottom-left of the viewport is (0,0); the top-right is (1,1). The z position is in world units from the camera.
*** 将屏幕坐标系单位化
*** 左下角 (0,0),右上角 (1,1)
** unity实现
*** 无法直接得到
*** 可以将屏幕坐标->视口坐标,或反之
*** 可以将世界坐标->视口坐标,或反之
*** 左下角 (0,0),右上角 (1,1)
*** 如前所述,当采集鼠标位置时,z不做处理,此时,z始终为0