当前位置: 首页 > news >正文

unity如何实现一个固定宽度的orthagraphic相机

做手机屏幕适配的同学可能会发现,每次unity导出的游戏都是固定高度,宽度随手机屏幕比例相应变化。如何固定宽度,让高度随屏幕比例变化呢?

比如,如下游戏,五个方块横过来要求刚好定在屏幕左右两端,这就要求相机宽度固定(相机宽度始终为五个方块的总宽度)。

clipboard.png

在说明解决方案之前,我要说明为何unity默认为固定高度,随屏幕比例变化宽度。这是因为Camera组件的size属性就是半个屏幕高度。如下图:

clipboard.png

clipboard.png

ViewPort size指的就是半个屏幕的高度,如下图所示:

clipboard.png

如果这个size的初始值不变,游戏当然就高度固定啦!
为了让宽度固定,假如我们需要的是固定宽度YOUR_WIDTH,那么相应的高度(size)是多少呢?

在unity中,我们可以通过Screen.width和Screen.length来获取手机屏幕的高度与宽度。显然摄像机的长宽比等于手机屏幕的长宽比,于是YOUR_WIDTH/size * 2 = Screen.width/Screen.length;

现在我们知道这个高度(size)应该是多少了:
Camera.main.orthagraphicSize = YOUR_WIDTH/2/(Screen.width/(float)Screen.length);

如此在unity中游戏开始时执行以上代码即可:
public float YOUR_WIDTH;
void Start(){

Camera.main.orthagraphicSize = YOUR_WIDTH/2/(Screen.width/(float)Screen.length);

}

好了这个问题,我们解决啦!
现在自然而然会想到另一个问题,如果在3D游戏中,相机为perspective,应该怎么办呢?
这个问题有点儿复杂,我们在以后的文章中在讲吧!!!

相关文章:

  • 世界上最简单的无等待算法(getAndIncrement)
  • 项目Alpha冲刺Day1
  • RHEL6基础三十二之系统默认语言修改
  • [转]建行B2B支付回调参数乱码现象解析
  • 制作简易无限魔方
  • 【技巧篇】解决悬浮的header、footer遮挡内容的处理技巧
  • 聚集索引:三级阶梯SQL Server索引
  • es 5 数组reduce方法记忆
  • 用vlan划分实现全网互通,并隔离c1,c3和c2,c4
  • Nginx 目录配置详解
  • 详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解...
  • linux之理解文件系统上的复制,移动,删除
  • Linux运维 第四阶段 (三) MySQL的SQL语句
  • C# GetSchema Get List of Table 获取数据库中所有的表名以及表中的纪录条数的方法
  • XML技术-Schema约束-Dom4j-Xpath详解
  • 自己简单写的 事件订阅机制
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • css选择器
  • Python实现BT种子转化为磁力链接【实战】
  • React 快速上手 - 07 前端路由 react-router
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • vue中实现单选
  • 大数据与云计算学习:数据分析(二)
  • 排序算法之--选择排序
  • 前端代码风格自动化系列(二)之Commitlint
  • 主流的CSS水平和垂直居中技术大全
  • postgresql行列转换函数
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​iOS实时查看App运行日志
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • #if和#ifdef区别
  • #QT(串口助手-界面)
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (规划)24届春招和25届暑假实习路线准备规划
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)http-server应用
  • .a文件和.so文件
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .Net CoreRabbitMQ消息存储可靠机制
  • .net 按比例显示图片的缩略图
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • @GetMapping和@RequestMapping的区别
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • []串口通信 零星笔记
  • [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作
  • [ARM]ldr 和 adr 伪指令的区别
  • [C#][DevPress]事件委托的使用
  • [C#]winform利用seetaface6实现C#人脸检测活体检测口罩检测年龄预测性别判断眼睛状态检测
  • [elastic 8.x]java客户端连接elasticsearch与操作索引与文档