首页 技术 正文
技术 2022年11月7日
0 收藏 314 点赞 1,110 浏览 1319 个字

在制作游戏中我们经常会遇到这样一个需求

在人物模型的上面显示 名字、称号 一类的文字或者图片 如下图

Unity 坐标 转换 详解  World世界坐标 Screen屏幕坐标 View视口坐标 GUI坐标 NGUI坐标 localPosition相对父级坐标

人物模型属于是Camera1  

UI Title信息属于NGUI Camera2

如下图

Unity 坐标 转换 详解  World世界坐标 Screen屏幕坐标 View视口坐标 GUI坐标 NGUI坐标 localPosition相对父级坐标

这时候我们就要用到坐标转换了 确定UI Title 的世界坐标

代码如下:

Transform charater = null;//角色Transform
Transform TitleLabel = null;//Title Label TransformCamera camera1 = Camera.main;//照射模型Camera
Camera camera2 = UICamera.currentCamera;//NGUI CameraVector3 pos = camera1.WorldToScreenPoint(charater.position);//Camera1的世界坐标转为屏幕坐标
pos.z = ;//不需要 制为0Vector3 pos2 = camera2.ScreenToWorldPoint(pos);//屏幕坐标转为camera2的世界坐标TitleLabel.position = pos2;//设置TitleLabel的世界坐标

想知道为什么 我们一起来详细的了解一下Unity 坐标的知识

查看Unity圣典 TransfromCamera 组件

Transfrom 组件有如下图2个变量

Unity 坐标 转换 详解  World世界坐标 Screen屏幕坐标 View视口坐标 GUI坐标 NGUI坐标 localPosition相对父级坐标

Camera 组件有如下图6个函数

Unity 坐标 转换 详解  World世界坐标 Screen屏幕坐标 View视口坐标 GUI坐标 NGUI坐标 localPosition相对父级坐标

看完上面翻译的信息 是不是对于 世界坐标 屏幕坐标 视口坐标 不是很理解 下面我们来详细介绍一下这些坐标

WorldSpace(世界坐标):

游戏场景原点世界坐标为(0,0,0)

获取和设置代码如下:

transform.position = Vector3.zero;//设置transform的世界坐标为原点(0,0,0)Vector3 vector3 = transform.position;//获得transform的世界坐标给vector3

ScreenSpace(屏幕坐标):

Screen Space是以像素来定义的 左下角为(0,0)   右上角为(Screen.width,Screen.height)  Z的位置是以相机的世界单位来衡量的。

例如场景分辨率1024×768,如果屏幕被缩小至100×100,那么点击右上角是100×100,而不是分辨率的1024×768。

鼠标的坐标 单个手指触摸屏幕坐标 都为屏幕坐标

Debug.Log(Input.mousePosition);//鼠标的坐标Debug.Log(Input.GetTouch().position);//单个手指触摸屏幕坐标

ViewPortSpace(视口坐标):

视口坐标是标准的和相对于相机的。相机的左下角为(0,0)点,右上角为(1,1)点,Z的位置是以相机的世界单位来衡量的。

GUI坐标

这个坐标系与屏幕坐标系相似,不同的是该坐标系以屏幕的左上角为(0,0)点,右下角为(Screen.width,Screen.height)。

NGUI坐标

其实没有什么NGUI坐标

要设置NGUI坐标 需要获得UICamera.currentCamera来转换坐标

了解了上面的知识 相信你利用 Camera 的那6个函数 可以随便的转换坐标了。

完结!

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,910
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,435
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,250
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,061
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,693
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,731