前言
在某一些类型的游戏,如果鉴宝类的游戏、找茬类的游戏、射击瞄准类的游戏等,对于游戏场景中某个部分进行放大缩小,是必不可少的功能,那么如何实现放大镜的效果呢?
思路
核心部分,是对于摄像机(Camera)的运用。首先,需要了解摄像机的原理,和现实生活中的照相机一样,相机是用来拍摄的,在游戏中,相当于是人的眼睛,用于观察游戏世界。相机拍摄之后的画面,生成的照片,也就是 Texture,最终会显示在屏幕上。
实现放大镜效果,需要创建一个单独的摄像机,用于将局部的细节进行放大,然后调整相机的缩放比例,使局部细节的部分放大或者缩小。最后配合 Mash 组件将额外的部分进行裁剪,只留下我们想要的局部细节部分。
扩展部分
摄像机目前提供 2种模式: ORTHO 和 PERSPECTIVE 。ORTHO 是正交投影模式,也叫做"平行投影"。原理是将图像通过平行光投影到画面上,主要用于拍摄 2D 画面。PERSPECTIVE 是透视投影,它是锥形的成像模式,是从某个投影中心将物体投影到单一投影面上所得到的透视图,成像效果远小近大,与人眼观察物体时的视觉效果非常接近,主要用于拍摄 3D 画面。
简单理解,当设置为 ORTHO 模式的 Camera 是正交相机,也就是 2D 相机。当设置为 PERSPECTIVE 模式的 Camera 是透视相机,也就是 3D 相机。
多个相机内容叠加?怎么管理?
这个需要结合 Camera 的 Visibility 和节点的 Layer 共同决定的分组渲染。当相机启用的情况下,如果节点 A 的 Layer 设置为 UI_2D,如果相机 C 的 Visibility 里面的 UI_2D 有勾选,那么这个相机 C 会渲染这个节点 A 。如果相机 C 的 Visibility 里面的 UI