一、坐标系的概念Unity 世界坐标系采用左手坐标系,大拇指指向X轴(红色),食指指向Y轴(黄色) , 中指向手心方向歪曲90度表示Z轴(蓝色) , 同时Z轴也是物体前进方向 , 下图表示Unity的四种坐标系:
文章插图
文章插图
其中GUI和Screen的单位是像素单位,什么是像素单位呢,这里可以先了解一下像素相关知识:
像素:简单地来说 , 可以理解成一个方块 , 它是图像的最小单元,不能再分割,但它并没有固定的大小 。
屏幕分辨率:指的是由像素组成的点阵,比如说一台电脑的屏幕分辨率为1920*1080,那么该电脑屏幕在横向有1920个像素,纵向有1080个像素 。
谈及像素和分辨率,还有一个概念叫做PPI,什么是PPI呢?
PPI:每英寸像素数目 , 可以理解为屏幕像素密度
因为像素并没有固定的大?。裕琍PI 越高,像素大小越?。?也就越清晰 。具体的计算公式如下:
文章插图
所以可以知道 , 在购买显示器的时候,同是2K屏,24寸的是要比27寸的更清晰一些,因为PPI更高 。
回到正题,比如我的电脑的分辨率是1920*1080,那么其X轴最大单位就是1920,Y轴最大单位就是1080 。
了解了GUI、世界和屏幕坐标系后,Viewport坐标系其实没什么好说的,只是进行了归一化 。
二、Screen坐标系和World坐标系的换算在进行换算前,需要知道Camera相机的概念,相机又分为正交视图(orthogonal)、透视视图(perspective) 。
一般2D游戏采用正交视图 , 3D游戏采用透视视图 。
1、正交视图
文章插图
【Unity坐标系入门】2、透视视图
文章插图
1、2D坐标系换算(正交视图)在上述示例中用到的天空背景图的分辨率是4096*2048 , 但是有个地方很奇怪 , Unity显示该图分辨率是2048*1024,实际是4096*2048 。
文章插图
文章插图
如果想要背景图填充满整个屏幕,可以将游戏视图分辨率设置为图片分辨率,然后还需要设置相机大?。?
相机大小(size):采用世界坐标系单位 , 为屏幕半宽 。(所以相机大小为2048/2/100=10.24)
Pixels Per Unit:每多少像素为一世界坐标系单位 。
文章插图
文章插图
这里我们应该知道屏幕坐标系的范围是(0,0)到(4096,2048),那世界坐标系范围是什么呢?
文章插图
世界坐标系的原点和范围受到相机的影响,若相机的位置为(0,0) , 并且没有发生旋转,那么世界坐标系的原点就在屏幕正中心,其范围是(-20.48,-10.24)到(20.48,10.24) 。
2、3D坐标系换算(透视视图)3D坐标系换算相对更复杂一点,如下实例:
文章插图
文章插图
文章插图
相机位于(0,0,-16),且视野角度为60度,帽子位于(0,6,0) , 且都没有发生旋转,那么其在Y轴上的分辨率既可以推算出来 。
文章插图
同理,其在X轴上的分辨率也可以算出来 。
推荐阅读
- 什么叫桥牌,它该怎么玩呢(桥牌入门是什么)
- 入门 桥牌怎么玩(桥牌怎么玩)
- Azure DevOps Server 入门实践与安装部署
- 桥牌要怎么玩(桥牌入门是什么)
- 桥牌要怎么玩(桥牌入门教程)
- python渗透测试入门——取代netcat
- MongoDB数据库新手入门
- 四 【单片机入门】应用层软件开发的单片机学习之路-----ESP32开发板PWM控制电机以及中断的使用
- 【日志系统】Loki日志监控 - 入门初体验
- OpenMP 入门