(1)适应性,即整个画面都放大

(2)真实型

我们首先做(1),依旧得益于Godot强大的动画系统,我们根本不需要写代码:
相机下有一个fov(视场角)属性,默认70,只要将其调小,就可以实现放大效果

点击我们之前创建的AnimationPlayer,到动画编辑界面中,点击添加轨道 -> 属性轨道:

再找到eye(相机)

再找到fov

添加完成后直接插入一个关键帧:

再把时间轴拖到最后,并把fov调低(我设置20),再插入关键帧

再把时间轴拖回最开始,这样(1)就已经做好了
(这里我懒得改瞄准镜了)

接下来我们再做(2)
首先,关闭(1)的效果

接下来调整一下瞄准镜

并添加以下节点

接着,先调整Viewport的size(这是倍镜画面的分辨率)

并且将Viewport下的Camera的fov更改:

到Sprite3D属性面板中,把材质改为Viewport材质:


再把它调整到倍镜后端:

最后来到player的脚本中:
在_process()函数中添加如下代码

就是获取Viewport下的Camera的全局变换,并将其设置为ker的全局变换
这样,ker指哪,这个Camera就会看哪了
(如果有穿模问题的话,请自行更改相机偏移或遮罩,这里就不多赘述了)
效果:
