Unity Camera 动态摄像机大小

动图

需求

棋盘是放在世界中的,在各种分辨率下棋盘占据屏幕的相对宽度需要保持不变。
因此我需要根据屏幕的分辨率动态改变摄像机的大小来达到这样的效果。

 mCameraWorld.orthographicSize = 10f;

2D项目采用的正交视图,摄像机的基础大小为10。屏幕设计分辨率为1080*1920
摄像机orthographicSize属性代表的是摄像机照射范围高度的一半

摄像机大小
红色的为摄像机照射范围,10 代表摄像机高度的一半
摄像机照射范围和UI重合。
摄像机大小示意图
可以计算得出摄像机宽为 1080/1920 * 20 = 11.25
要保持棋盘在UI中所占宽的比例不变,就需要使摄像机的宽在任何情况下都为 11.25
当屏幕分辨率发生改变,就可以倒推出摄像机的大小。
当屏幕分辨率改为1125*2436 时,屏幕的高是宽的 2436/1125 = 2.16倍。
摄像机的总高度应为 11.25 * 2.16 = 24.3
最终得出摄像机的大小为 24.3/2 = 12.15;
下面贴出代码

private void GetCameraSize() {
        float designScreenHeight = 1920;
        float designScreenWidth = 1080;
        float designCameraSize = 10;

        float designCameraWidth = designScreenWidth / designScreenHeight * (designCameraSize*2);
        float currCameraHeight = Screen.height / Screen.width * designCameraWidth;
        float currCameraSize = currCameraHeight / 2;
    }
    //*2 和 /2 并不必要,只是为了逻辑清晰。

如此就可以动态设置摄像机的大小,从而达到,棋盘占屏幕宽度比例不变的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值