Unity3D世界中的坐标系有四种:世界坐标系、屏幕坐标系、视口坐标系和绘制UI界面的坐标系。
1.世界坐标系
我们在场景中添加物体(Cube),他们都是以世界坐标显示在场景中。transform.position可以获取他们的世界坐标。
2.屏幕坐标
屏幕坐标是以像素为单位的,以屏幕左下角为(0,0),右上角为(Screen.width,Screen.height),z的位置是以相机的世界单位来衡量的。
注:鼠标位置坐标属于屏幕坐标,Input.mousePosition可以获得该位置坐标,手指触摸屏幕也为屏幕坐标,Input.GetTouch(0).position可以获得单个手指触摸屏幕的坐标。
Screen.width=Camera.pixelWidth;
Screen.height=Camera.pixelHeight;
3.ViewPort Space(视口坐标)
视口坐标是标准的和相对于相机的。相机的左下角为(0,0)点,右上角为(1,1)点,z的位置是以相机的世界单位来衡量的。
4.绘制GUI界面的坐标系
这个坐标与屏幕坐标相似,不同的是该坐标系以屏幕的左上角为(0,0)点,右下角为(Screen.width,Screen.height)。
四种坐标系的转换:
1.世界坐标→屏幕坐标:Camera.WorldToScreenPoint(transform.position);
2.屏幕坐标→视口坐标:Camera.ScreenToViewPortPoint(Input.GetTouch(0).position);
3.视口坐标→屏幕坐标:Camera.ViewportToScreenPoint();
4.视口坐标→世界坐标:Camera.ViewportToWorldPoint();