首页 > Unity3D引擎 > 基础系列 > Unity的几种坐标系及相互转换
2015
02-05

Unity的几种坐标系及相互转换

介绍

1.WorldSpace(世界坐标系)

当我们向场景中添加物体时,他们都是以世界坐标系的方式的方式显示在场景中的

通过transform.position可以得到它在世界中的坐标位置,transform.position(Vector3)可以设置它在世界中的位置(c#不支持单独设置x y z);

2.ScreenSpace(屏幕坐标系)

以像素为单位,左下角是(0,0),右上角为(screen.width, screen.height),Z的位置是以相机的世界单位来衡量//及物体离相机远近

注:鼠标位置坐标属于屏幕坐标,Input.mousePosition可以获得鼠标坐标,手指触摸屏也为屏幕坐标,Input.GetTouch(0).position可以获得单个手指的手机屏幕坐标

说点题外话

unity中Input.GetMouseButtonDown(0)代表按下鼠标左键,Input.GetMouseButtonDown(1)代表鼠标右键Input.GetMouseButtonDown(2)代表滚轮中间。

3.ViewPort(视口坐标)

左下角为(0, 0),右上角为(1, 1)在一些画中画效果中常用到,比如主视口为FPS,然后右下角有一个小窗口为第三人称视图。

4.绘制GUI界面的坐标系(自从有了新版UI之后这个也很少用到)

这个坐标系与屏幕坐标系类似,不同的是左上角为(0,0),右下角为(screen.width, screen.height)这样绘制起来更方便。

5.桌面坐标系(系统坐标系)

这个坐标系与屏幕坐标系类似,不同的是该坐标系以桌面的左上角为(0,0),桌面右下角为桌面分辨率的宽和桌面分辨率的高

用SetCursorPos设置鼠标坐标,用GetCursorPos得到鼠标坐标。

C#中:

命名空间 using System.Runtime.InteropServices;

导入库 [DllImport("user32.dll")]

函数原型 public static extern int SetCursorPos(int x, int y);

public static extern bool GetCursorPos(ref int x, ref int y);

******************************************************

转换

1.物体的世界坐标到屏幕坐标的转换

2.屏幕坐标转世界坐标

3.屏幕坐标转视口坐标

4.视口坐标转屏幕坐标

5.视口坐标到世界坐标

6.屏幕坐标转射线

6.视口坐标转射线

最后编辑:
作者:网虫虫
网虫虫
分享是一种快乐; 分享是一种美德; 分享是一种幸福!

0 0 votes
Article Rating
Subscribe
提醒
guest
24 评论
Inline Feedbacks
View all comments