主贴链接:
https://tieba.baidu.com/p/6574833207
接着之前的,既然我们有了机瞄,那么接下来我们就要实装“倍镜”效果,而倍镜实现的效果大致有两种:
(1)适应性,即整个画面都放大
![](http://tiebapic.baidu.com/forum/w%3D580/sign=c80131976a1ed21b79c92eed9d6fddae/277f0c30e924b899e694d95d79061d950b7bf6f6.jpg?tbpicau=2024-08-06-05_e4453530cb4e176edd3c5210accda4cd)
(2)真实型
![](http://tiebapic.baidu.com/forum/w%3D580/sign=d5b2dc011e23dd542173a760e108b3df/4de0ca33c895d143b3ea444664f082025baf07f9.jpg?tbpicau=2024-08-06-05_1f3302f72e66d3741bb9765731f5af8b)
我们首先做(1),依旧得益于Godot强大的动画系统,我们根本不需要写代码:
相机下有一个fov(视场角)属性,默认70,只要将其调小,就可以实现放大效果
![](http://tiebapic.baidu.com/forum/w%3D580/sign=3680d145ae12c8fcb4f3f6c5cc0392b4/45aa3d738bd4b31cc30a37de90d6277f9e2ff86c.jpg?tbpicau=2024-08-06-05_b5155a06fbc3953b91c40dca52ce6875)
点击我们之前创建的AnimationPlayer,到动画编辑界面中,点击添加轨道 -> 属性轨道:
![](http://tiebapic.baidu.com/forum/w%3D580/sign=ebf5eb4bc51b0ef46ce89856edc551a1/1077fa24b899a901033ff8530a950a7b0208f510.jpg?tbpicau=2024-08-06-05_8b73b80ca319c19c9cca487ed9236fb5)
再找到eye(相机)
![](http://tiebapic.baidu.com/forum/w%3D580/sign=ea67427f3f34349b74066e8df9eb1521/b3764f6034a85edf42fb5d465e540923dd547523.jpg?tbpicau=2024-08-06-05_aca5534a9bfc691d4a763ec20ec233ad)
再找到fov
![](http://tiebapic.baidu.com/forum/w%3D580/sign=e346ac7c3af5e0feee1889096c6134e5/0663b818972bd40726a370986c899e510fb30931.jpg?tbpicau=2024-08-06-05_96008769643927820e481438348090b6)
添加完成后直接插入一个关键帧:
![](http://tiebapic.baidu.com/forum/w%3D580/sign=b300087a10082838680ddc1c8898a964/3a6dd55c103853436f8d24448413b07ecb8088d8.jpg?tbpicau=2024-08-06-05_8c63474105414455857c72b6d9d16cb4)
再把时间轴拖到最后,并把fov调低(我设置20),再插入关键帧
![](http://tiebapic.baidu.com/forum/w%3D580/sign=e06dacd2fe50352ab16125006342fb1a/de4ea0de9c82d1581621fad4970a19d8bd3e42ff.jpg?tbpicau=2024-08-06-05_3e8562f75808c0bb8cbbb2d05b73376b)
再把时间轴拖回最开始,这样(1)就已经做好了
(这里我懒得改瞄准镜了)
![](http://tiebapic.baidu.com/forum/w%3D580/sign=16f34b01414e9258a63486e6ac83d1d1/c7d2c243ad4bd1136c2014574dafa40f4afb05a8.jpg?tbpicau=2024-08-06-05_a7fee7b6693eb021f4bcc7daedb00da8)
接下来我们再做(2)
首先,关闭(1)的效果
![](http://tiebapic.baidu.com/forum/w%3D580/sign=8ee5e4de5010b912bfc1f6f6f3fcfcb5/d5f359ed2e738bd4f0e81154b68b87d6267ff955.jpg?tbpicau=2024-08-06-05_27c507f00feb1d8916c2fb83804776a2)
接下来调整一下瞄准镜
![](http://tiebapic.baidu.com/forum/w%3D580/sign=7424e4d8be773912c4268569c8198675/d6bec42a6059252d560dbf61239b033b5bb5b900.jpg?tbpicau=2024-08-06-05_b2b9abcb35a89a21dbaef1dd4acfb154)
并添加以下节点
![](http://tiebapic.baidu.com/forum/w%3D580/sign=481b3a614e82b2b7a79f39cc01accb0a/984d234e251f95ca389730d3de177f3e67095238.jpg?tbpicau=2024-08-06-05_4d51cc9e1a2f6bafd0cae9b5dd25392a)
接着,先调整Viewport的size(这是倍镜画面的分辨率)
![](http://tiebapic.baidu.com/forum/w%3D580/sign=76990088b644ad342ebf878fe0a30c08/f2585234970a304ec2a5029fc6c8a786c8175c93.jpg?tbpicau=2024-08-06-05_8d816285b7dc2a8efa994dc5ea6ecf77)
并且将Viewport下的Camera的fov更改:
![](http://tiebapic.baidu.com/forum/w%3D580/sign=fa44bc8475d9f2d3201124e799ed8a53/ae03be345982b2b75112baa126adcbef77099b89.jpg?tbpicau=2024-08-06-05_fcdec1f8a84883de9908eb04fe046d24)
到Sprite3D属性面板中,把材质改为Viewport材质:
![](http://tiebapic.baidu.com/forum/w%3D580/sign=e9f15109073853438ccf8729a312b01f/de1fdfbf6c81800ac5032b6ba63533fa838b47bc.jpg?tbpicau=2024-08-06-05_448f6c218ba1209f31f0a006951c5094)
![](http://tiebapic.baidu.com/forum/w%3D580/sign=b04dede0deea15ce41eee00186013a25/82f6d813495409236e22e01b8558d109b2de49d7.jpg?tbpicau=2024-08-06-05_5860d9029df00c321f2a0f9da9cccc4a)
再把它调整到倍镜后端:
![](http://tiebapic.baidu.com/forum/w%3D580/sign=ecdaf5fc9526cffc692abfba89004a7d/6424e5246b600c33dcdb5dad0d4c510fd8f9a1f8.jpg?tbpicau=2024-08-06-05_2481d5d01f46b9a0fa7ffa898d6e22ba)
最后来到player的脚本中:
在_process()函数中添加如下代码
![](http://tiebapic.baidu.com/forum/w%3D580/sign=c8288b3842fbb2fb342b581a7f4b2043/3646323fb80e7becc5218084382eb9389a506ba7.jpg?tbpicau=2024-08-06-05_2e8379a5230be36b591f7efa245df634)
就是获取Viewport下的Camera的全局变换,并将其设置为ker的全局变换
这样,ker指哪,这个Camera就会看哪了
(如果有穿模问题的话,请自行更改相机偏移或遮罩,这里就不多赘述了)
效果:
![](http://tiebapic.baidu.com/forum/w%3D580/sign=85e3e668319759ee4a5060c382fb434e/739e9e1001e93901ac260f5b6cec54e736d19672.jpg?tbpicau=2024-08-06-05_4d6e851babe2746172c6204eb12cbcd5)
https://tieba.baidu.com/p/6574833207
接着之前的,既然我们有了机瞄,那么接下来我们就要实装“倍镜”效果,而倍镜实现的效果大致有两种:
(1)适应性,即整个画面都放大
![](http://tiebapic.baidu.com/forum/w%3D580/sign=c80131976a1ed21b79c92eed9d6fddae/277f0c30e924b899e694d95d79061d950b7bf6f6.jpg?tbpicau=2024-08-06-05_e4453530cb4e176edd3c5210accda4cd)
(2)真实型
![](http://tiebapic.baidu.com/forum/w%3D580/sign=d5b2dc011e23dd542173a760e108b3df/4de0ca33c895d143b3ea444664f082025baf07f9.jpg?tbpicau=2024-08-06-05_1f3302f72e66d3741bb9765731f5af8b)
我们首先做(1),依旧得益于Godot强大的动画系统,我们根本不需要写代码:
相机下有一个fov(视场角)属性,默认70,只要将其调小,就可以实现放大效果
![](http://tiebapic.baidu.com/forum/w%3D580/sign=3680d145ae12c8fcb4f3f6c5cc0392b4/45aa3d738bd4b31cc30a37de90d6277f9e2ff86c.jpg?tbpicau=2024-08-06-05_b5155a06fbc3953b91c40dca52ce6875)
点击我们之前创建的AnimationPlayer,到动画编辑界面中,点击添加轨道 -> 属性轨道:
![](http://tiebapic.baidu.com/forum/w%3D580/sign=ebf5eb4bc51b0ef46ce89856edc551a1/1077fa24b899a901033ff8530a950a7b0208f510.jpg?tbpicau=2024-08-06-05_8b73b80ca319c19c9cca487ed9236fb5)
再找到eye(相机)
![](http://tiebapic.baidu.com/forum/w%3D580/sign=ea67427f3f34349b74066e8df9eb1521/b3764f6034a85edf42fb5d465e540923dd547523.jpg?tbpicau=2024-08-06-05_aca5534a9bfc691d4a763ec20ec233ad)
再找到fov
![](http://tiebapic.baidu.com/forum/w%3D580/sign=e346ac7c3af5e0feee1889096c6134e5/0663b818972bd40726a370986c899e510fb30931.jpg?tbpicau=2024-08-06-05_96008769643927820e481438348090b6)
添加完成后直接插入一个关键帧:
![](http://tiebapic.baidu.com/forum/w%3D580/sign=b300087a10082838680ddc1c8898a964/3a6dd55c103853436f8d24448413b07ecb8088d8.jpg?tbpicau=2024-08-06-05_8c63474105414455857c72b6d9d16cb4)
再把时间轴拖到最后,并把fov调低(我设置20),再插入关键帧
![](http://tiebapic.baidu.com/forum/w%3D580/sign=e06dacd2fe50352ab16125006342fb1a/de4ea0de9c82d1581621fad4970a19d8bd3e42ff.jpg?tbpicau=2024-08-06-05_3e8562f75808c0bb8cbbb2d05b73376b)
再把时间轴拖回最开始,这样(1)就已经做好了
(这里我懒得改瞄准镜了)
![](http://tiebapic.baidu.com/forum/w%3D580/sign=16f34b01414e9258a63486e6ac83d1d1/c7d2c243ad4bd1136c2014574dafa40f4afb05a8.jpg?tbpicau=2024-08-06-05_a7fee7b6693eb021f4bcc7daedb00da8)
接下来我们再做(2)
首先,关闭(1)的效果
![](http://tiebapic.baidu.com/forum/w%3D580/sign=8ee5e4de5010b912bfc1f6f6f3fcfcb5/d5f359ed2e738bd4f0e81154b68b87d6267ff955.jpg?tbpicau=2024-08-06-05_27c507f00feb1d8916c2fb83804776a2)
接下来调整一下瞄准镜
![](http://tiebapic.baidu.com/forum/w%3D580/sign=7424e4d8be773912c4268569c8198675/d6bec42a6059252d560dbf61239b033b5bb5b900.jpg?tbpicau=2024-08-06-05_b2b9abcb35a89a21dbaef1dd4acfb154)
并添加以下节点
![](http://tiebapic.baidu.com/forum/w%3D580/sign=481b3a614e82b2b7a79f39cc01accb0a/984d234e251f95ca389730d3de177f3e67095238.jpg?tbpicau=2024-08-06-05_4d51cc9e1a2f6bafd0cae9b5dd25392a)
接着,先调整Viewport的size(这是倍镜画面的分辨率)
![](http://tiebapic.baidu.com/forum/w%3D580/sign=76990088b644ad342ebf878fe0a30c08/f2585234970a304ec2a5029fc6c8a786c8175c93.jpg?tbpicau=2024-08-06-05_8d816285b7dc2a8efa994dc5ea6ecf77)
并且将Viewport下的Camera的fov更改:
![](http://tiebapic.baidu.com/forum/w%3D580/sign=fa44bc8475d9f2d3201124e799ed8a53/ae03be345982b2b75112baa126adcbef77099b89.jpg?tbpicau=2024-08-06-05_fcdec1f8a84883de9908eb04fe046d24)
到Sprite3D属性面板中,把材质改为Viewport材质:
![](http://tiebapic.baidu.com/forum/w%3D580/sign=e9f15109073853438ccf8729a312b01f/de1fdfbf6c81800ac5032b6ba63533fa838b47bc.jpg?tbpicau=2024-08-06-05_448f6c218ba1209f31f0a006951c5094)
![](http://tiebapic.baidu.com/forum/w%3D580/sign=b04dede0deea15ce41eee00186013a25/82f6d813495409236e22e01b8558d109b2de49d7.jpg?tbpicau=2024-08-06-05_5860d9029df00c321f2a0f9da9cccc4a)
再把它调整到倍镜后端:
![](http://tiebapic.baidu.com/forum/w%3D580/sign=ecdaf5fc9526cffc692abfba89004a7d/6424e5246b600c33dcdb5dad0d4c510fd8f9a1f8.jpg?tbpicau=2024-08-06-05_2481d5d01f46b9a0fa7ffa898d6e22ba)
最后来到player的脚本中:
在_process()函数中添加如下代码
![](http://tiebapic.baidu.com/forum/w%3D580/sign=c8288b3842fbb2fb342b581a7f4b2043/3646323fb80e7becc5218084382eb9389a506ba7.jpg?tbpicau=2024-08-06-05_2e8379a5230be36b591f7efa245df634)
就是获取Viewport下的Camera的全局变换,并将其设置为ker的全局变换
这样,ker指哪,这个Camera就会看哪了
(如果有穿模问题的话,请自行更改相机偏移或遮罩,这里就不多赘述了)
效果:
![](http://tiebapic.baidu.com/forum/w%3D580/sign=85e3e668319759ee4a5060c382fb434e/739e9e1001e93901ac260f5b6cec54e736d19672.jpg?tbpicau=2024-08-06-05_4d6e851babe2746172c6204eb12cbcd5)