博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
unity如何实现一个固定宽度的orthagraphic相机
阅读量:6189 次
发布时间:2019-06-21

本文共 770 字,大约阅读时间需要 2 分钟。

做手机屏幕适配的同学可能会发现,每次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,应该怎么办呢?
这个问题有点儿复杂,我们在以后的文章中在讲吧!!!

转载地址:http://aroda.baihongyu.com/

你可能感兴趣的文章
VC 获取指定文件夹路径的方法小结
查看>>
rpl 智能物件路由协议
查看>>
RAW+ASM 的RAC 安装文档
查看>>
Linux 网络编程七(非阻塞socket:epoll--select)
查看>>
数据库 Linux下的MySQL数据库管理
查看>>
VirtualBox "/sbin/mount.vboxsf: mounting failed with the error: Invalid argument"解决办法
查看>>
开放源码的对象关系映射工具ORM.NET 删除数据 Deleting Records using ORM.NET
查看>>
程序人生:女程序员的求职奋斗史
查看>>
敲击最多的键------验证
查看>>
关于DataSet事务处理以及SqlDataAdapter四种用法
查看>>
pb中 执行动态sql
查看>>
测试基础 - 软件测试过程控制
查看>>
ASP.NET中App_Code,App_Data等文件夹的作用
查看>>
SQL数据库开发知识总结:提高篇
查看>>
分享一个jQuery的超酷分页插件 - jPages
查看>>
HDU-1114 Piggy-Bank 完全背包
查看>>
tracert www.baidu.com
查看>>
火狐显示图片的方法
查看>>
开源点评:Protocol Buffers介绍
查看>>
j2ee数据库连接池配置大全
查看>>