2015-05-14 00:52:36 yuxikuo_1 阅读数 13411

1、获取主摄像机的位置:

private Vector3 _screenV;
_screenV = _camera.WorldToScreenPoint (cube.transform.position);
作用是获取屏幕坐标的z轴坐标

2、获取屏幕坐标/鼠标点击坐标,设置z轴坐标

if (Input.GetMouseButtonDown (0)) 
{
    Vector3 dianV = Input.mousePosition;
    dianV.z = _screenV.z;
}
3、转为世界坐标

Vector3 wv = _camera.ScreenToWorldPoint(dianV);


2016-05-19 20:01:33 Gary_888 阅读数 700

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();

2016-09-27 11:20:17 acuriousguy 阅读数 1665

unity 中的3d物体都是以世界坐标显示在场景中的,通过transform.position获取。

unity 屏幕坐标(0.0)点在左下角以像素为单位,屏幕宽高分别是Screen.width, Screen.height。

ngui坐标(0.0)点在屏幕中心,通过两种方式缩放Pixel Perfect 和Fixed Size。


屏幕坐标和ngui坐标有两种转换方式

1.当Scaling Style 是 PixelPerfect 时仅计算像素的偏移即可

t.localPosition = (Input.mousePosition - new Vector3(Screen.width / 2, Screen.height / 2, 0))

2.当Scaling Style 是 Fixed Size时还需计算坐标系的缩放值

float rate = System.Convert.ToSingle(uir.manualHeight) / Screen.height;
t.localPosition = (Input.mousePosition - new Vector3(Screen.width / 2, Screen.height / 2, 0)) * rate;


当然unity也提供了两个转换方法

世界坐标和屏幕坐标转换通过screenpos = Camera.main.WorldToScreenPoint(worldpos)

屏幕坐标和ngui坐标转换通过trans.position = UICamera.currentCamera.ScreenToWorldPoint(screenpos)





Unity3D-各种坐标系

阅读数 815

unity3d坐标体系

阅读数 16

Unity3D的四种坐标系

阅读数 19163

没有更多推荐了,返回首页