Unity2D开发笔记二 动态设置正交摄像机对焦距离

一 摄像机分类

  首先说一下什么是摄像机,这和我们现实生活里的摄像机概念一样,只不过Unity里的摄像机是用来拍摄游戏场景的,我们透过屏幕能够看到的游戏场景都是通过摄像机拍摄出来的,从游戏开始摄像机就在工作,把每一帧游戏画面反映到屏幕上。

  Unity提供了两种摄像机类型:

  1. 透视摄像机
  2. 正交摄像机

  透视摄像机主要用于3D游戏开发上,学过美术的朋友应该能更好的理解,透视嘛,越远的地方成像越小,越近的地方成像越大。而正交摄像机没有远小近大的说法,就好比一个正方体的盒子,从一面看到对面的感觉,你看到的面有多大成像就是多大。

  再具体的介绍大家就看看书或者搜一下相关资源吧。因为我的目标的是2D游戏开发,所以后面的摄像机介绍都是针对正交摄像机的。

二 适应屏幕分辨率

  这是一个老生常谈的问题,因为当下的游戏设备五花八门,手机游戏更甚,每一台手机的屏幕分辨率都不见得一样,那么让同一款游戏能够支持不同分辨率尺寸的设备就变得尤为重要。

  解决方案很多,结合书里的介绍我给出其中一个解决思路:假定一个成像尺寸,然后在此基础上根据屏幕实际的分辨率做相应的调整。这个调整称之为正交摄像机的对焦距离调整。也即是说动态的调整Camera的尺寸来达到屏幕适配的目的。

三 脚本实现

  因为要动态的对Camera的Size进行调整,所以就需要编写脚本挂到Camera组件上,在游戏启动时通过计算来重置Camera的Size值。

  脚本我是用的C#编写的,实现过程如下:

  1. 首先需要设置摄像机单元格的像素大小,我们假定每个单元格像素100
  2. 设置基础的缩放比例值为1
  3. 以iphone5屏幕的分辨率1136*640作为基准
  4. 根据实际屏幕分辨率和基准缩放比例重新计算摄像机的尺寸
public class PiexelCamera : MonoBehaviour
{
    // 默认单元格的像素大小
    public static float pixelToUnit = 100f;
    // 默认缩放比例为1
    public static float scale = 1f;
    // 以iphone5的屏幕尺寸作为基准的屏幕分辨
    public Vector2 baseResolution = new Vector2(1136, 640);
    // 在Awake方法中进行相机的初始化动作,会因为Awake方法会在实例未创建之前调用,所以系统级别设计应该都在Awake中实现
    private void Awake()
    {
        // 通过GetComponent方法获取相机实例
        var camera = GetComponent<Camera>();
        // 这里做了一个多余的判断,如果是正交相机才进行适配处理
        if (camera.orthographic)
        {
            // 根据实际的屏幕尺寸和基准的缩放比计算实际缩放比例
            scale = Screen.height / baseResolution.y;
            // 单元格实际像素值应该是实际缩放比例与默认单元格像素值的乘积
            pixelToUnit *= scale;
            // 为当前正交摄像机设置实际orthographic值
            camera.orthographicSize = (Screen.height / 2) / pixelToUnit;
        }
    }
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Unity2D运动摄像机是指在Unity引擎中使用的2D场景中的摄像机运动控制组件。摄像机游戏开发中起到非常重要的作用,它可以控制游戏画面的视角和跟随目标物体的移动。在Unity2D中,通过使用摄像机组件的属性和方法可以实现不同的运动效果。 首先,可以通过设置摄像机的位置和旋转属性来控制摄像机的基本位置和角度。这可以通过代码编写或者在Unity编辑器中进行属性设置来完成。摄像机的位置属性决定了摄像机所拍摄的画面位置,旋转属性则通过摄像机的角度来实现视角的变化。 其次,可以通过编写代码来实现摄像机的运动效果。例如,可以使用Lerp方法来实现平滑跟随目标物体的移动。Lerp方法可以使摄像机的位置逐渐接近目标物体的位置,从而实现平滑的跟随效果。 除了跟随移动,还可以实现摄像机的缩放效果。摄像机的Size属性可以控制摄像机视野的大小,通过改变Size的值可以实现画面的缩放效果。 此外,还可以通过编写代码来实现摄像机的抖动效果。通过在摄像机的位置上加入随机的微小偏移,可以模拟出抖动的效果,增加游戏动态感。 总之,Unity2D运动摄像机是在2D游戏开发中非常常用的组件,通过摄像机的位置、旋转、缩放等属性以及使用代码控制摄像机的运动,可以实现丰富多样的视觉效果,提升游戏的可玩性和观赏性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柠檬睡客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值