景区网站设计,米思米网站订单取消怎么做,中国seo第一人,wordpress页面关联到菜单本人学生一枚#xff0c;刚接触unity3D#xff0c;若有理解得不对的地方#xff0c;还望各路大神不吝赐教~ unity中的坐标系统包括世界坐标(World Space)#xff0c;屏幕坐标(Screen Space)#xff0c;视口坐标(View Space)以及GUI坐标系统。世界坐标(World Space)场景中添…本人学生一枚刚接触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屏幕坐标是通过像素来定义的屏幕坐标的坐标系以屏幕左下角为00点右上角为Screen.width,Screen.height,屏幕坐标为3维坐标z的大小由相机的世界位置来定义。通过Input.mousePosition得到的是屏幕坐标屏幕坐标的数值只与屏幕的大小有关跟分辨率没有关系。视口坐标View Space视口坐标标准化后的屏幕坐标它的坐标原点同样是左下角为00点只不过右上角为11点若对象处在场景的正中间则对象的视口坐标为0.50.5与屏幕坐标一样视口坐标也是一个3维的它的z方向的数值由相机的世界位置来决定。GUI坐标系GUI坐标系主要在通过OnGUI方法绘制屏幕UI界面时运用较多GUI坐标系是一个2维坐标系与屏幕空间类似所表示的范围也是整个屏幕空间范围只不过GUI坐标的坐标原点在左上角,即左上角为00点右下角为Screen.width,Screen.height。坐标之间的转换世界坐标通过transform.position获得局部坐标通过transform.Localposition获得世界坐标与屏幕坐标之间的转换Camera.main.ScreenToWorldPoint(Vector 3) ——屏幕坐标转换到世界坐标其中的main为主相机当然也可以为场景中其他相机Camera.main.WorldToScreenPoint(transform.position)——世界坐标转换到屏幕坐标 其中的main为主相机当然也可以为场景中其他相机。这里附带一个鼠标拖拽物体的代码其中主要就是世界坐标与屏幕坐标之间转换private Vector3 _vec3TargetScreenSpace;// 目标物体的屏幕空间坐标 private Vector3 _vec3TargetWorldSpace;// 目标物体的世界空间坐标 private Transform _trans;// 目标物体的空间变换组件 private Vector3 _vec3MouseScreenSpace;// 鼠标的屏幕空间坐标 private Vector3 _vec3Offset;// 偏移
void Awake( ) { _trans transform; }
IEnumerator OnMouseDown( )
{ // 把目标物体的世界空间坐标转换到它自身的屏幕空间坐标 _vec3TargetScreenSpace Camera.main.WorldToScreenPoint(_trans.position); // 存储鼠标的屏幕空间坐标Z值使用目标物体的屏幕空间坐标 _vec3MouseScreenSpace new Vector3(Input.mousePosition.x, Input.mousePosition.y, _vec3TargetScreenSpace.z); // 计算目标物体与鼠标物体在世界空间中的偏移量 _vec3Offset _trans.position - Camera.main.ScreenToWorldPoint(_vec3MouseScreenSpace); // 鼠标左键按下 while ( Input.GetMouseButton(0) ) { // 存储鼠标的屏幕空间坐标Z值使用目标物体的屏幕空间坐标 _vec3MouseScreenSpace new Vector3(Input.mousePosition.x, Input.mousePosition.y, _vec3TargetScreenSpace.z); // 把鼠标的屏幕空间坐标转换到世界空间坐标Z值使用目标物体的屏幕空间坐标加上偏移量以此作为目标物体的世界空间坐标
_vec3TargetWorldSpace Camera.main.ScreenToWorldPoint(_vec3MouseScreenSpace) _vec3Offset;
// 更新目标物体的世界空间坐标
_trans.position _vec3TargetWorldSpace;
// 等待固定更新
yield return new WaitForFixedUpdate(); } } 屏幕坐标与视口坐标之间的转换Camera.ScreenToViewportPoint()方法将屏幕坐标转化为视口坐标屏幕坐标与视口坐标之间的转换屏幕坐标与视口坐标只有原点的选定不同数值范围是一致的这里借用一下http://blog.csdn.net/qinyuanpei/article/details/49438919这篇博客中提到的方法来进行坐标之间的转换private Vector2 ScreenToGUIPoint(Vector2 v){return new Vector2(v.x,Screen.heigth-v.y)} 这个方法同样可以将GUI坐标转换为屏幕坐标而不用修改任何地方。