Unity3d--GUI自适应矩阵(通过Matrix4x4.SetTRS)
来源:互联网 发布:youtube显示无网络连接 编辑:程序博客网 时间:2024/06/05 06:11
一、为什么要用自适应矩阵
在UI界面设计过程中,由于每个玩家的屏幕尺寸不相同,为了使游戏界面在任何设备都能达到统一的布局,引入了通过屏幕信息计算出的自适应矩阵
二、原理讲解
比如我们游戏中先设定标准屏的高度和宽度:
public static float desiginWidth = 800.0f; //标准宽度public static float desiginHeight = 480.0f; //标准高度
1、计算偏移量
计算lux位移距离
float lux = (Screen.width - ConstOfMenu.desiginWidth * Screen.height / ConstOfMenu.desiginHeight) / 2.0f;
对其的理解可以看下面的简图:
2、设置GUI矩阵
Matrix4x4 guiMatrix = Matrix4x4.identity; //此时guiMatrix为单位矩阵guiMatrix.SetTRS(new Vector3(lux,0,0), Quaternion.identity, new Vector3(Screen.height / ConstOfMenu.desiginHeight, Screen.height / ConstOfMenu.desiginHeight, 1)); //The current matrix is modified so that places things at position pos, oriented in rotation q and scaled by s.
我们来看看SetTRS方法:Matrix4x4.SetTRS
其在手册上的定义为:
public void SetTRS(Vector3 pos, Quaternion q, Vector3 s);
它的作用为: 将 四元数 转化成 旋转矩阵
pos为一个三元坐标,表示place things at 即将物体设置在哪里的起始偏移坐标。
q 为定向旋转(一个四元数)
s为缩放倍数,默认(1,1,1);
以上述代码的调用为例:
pos 为 vector(lux,0,0) 理解为把画面设置向右平移到屏幕中间,结合简图
q为Quaternion.identity,这个四元数对应于“不旋转”(对象与世界或父轴完全对齐。)
最后缩放倍数为屏幕的长度参数与标准屏的比值
最后的guiMatrix 就是自适应矩阵
阅读全文
0 0
- Unity3d--GUI自适应矩阵(通过Matrix4x4.SetTRS)
- 【转】Unity3D开发之Matrix4x4矩阵变换
- Unity3D开发之Matrix4x4矩阵变换
- Unity3D开发之Matrix4x4矩阵变换
- Unity3D开发之Matrix4x4矩阵变换
- Unity3d gui自适应屏幕
- Unity3d gui自适应屏幕
- Unity3d gui自适应屏幕
- GUI自适应矩阵
- OpenGL - Matrix4X4 矩阵变换
- OpenGL - Matrix4X4 矩阵变换
- Unity3d-旋转Quaternion、Matrix4x4、 Euler
- Unity3D学习笔记01:GUI自适应屏幕分辨率
- Matrix4x4
- Matrix4x4
- Unity3D---GUI
- <Unity3D>Unity3D GUI控件
- QT GUI 屏幕自适应
- Oracle数据库基础
- 输入某年某月某日,判断这一天是这一年的第几天?
- Run-Time Check Failure #2
- 采用mustache语言作为elasticsearch搜索请求的预处理模板
- 在eclipse如何设置新建JSP文件的默认字符编码为UTF-8?
- Unity3d--GUI自适应矩阵(通过Matrix4x4.SetTRS)
- hadoop学习3
- [转载]图论500题
- 计算机网络第一节
- unity 如何实现安卓Android的toast功能
- ubuntu安装 nautilus(右键单击出现打开终端的插件)
- php CI3.0控制器多级目录支持
- 视图
- Oracle 用户、对象权限、系统权限