我在网上查了不少Unity放大镜、望远镜等等的制作方法,发现都是通过改变摄像机的位置或者改变Camera中Projection下的参数来改变屏幕的视野。但是这些在VR中实现都有各种各样的缺点,会改变整个屏幕的视野而不是我们想要的区域的放大,或者可能产生穿透物体的情况。
这里我采用双摄像机的做法。
首先在望远镜前段Create一个新的Camera,用于获取放大后的区域的视野,改小Field of View的值,减小视野范围,屏幕大小不变,得到放大物体、“望远”的效果。
然后新建一个RenderTexture,用于获取上面Camera的的图像,得到放大后的画面。方法是将RenderTexture拖到Camera的Target Texture中。
最后将RenderTexture制作成一个材质球,在望远镜前端Create一个Plane,并使用该材质球作为材质,改变Plane的大小和方向,使之与望远镜更切合。
至此,VR望远镜就制作成功了,在VR游戏运行过程中,还可以通过修改Field of View的值来改变放大倍数。关于瞄准精度,可以通过在Plane上增加额外的贴纸,或者使用射线方法制作红外线瞄准等方法解决。