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,应该怎么办呢?
这个问题有点儿复杂,我们在以后的文章中在讲吧!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值