作为一款FPS游戏,最令人振奋的时刻莫过于使用狙击枪打开倍镜拉栓的那一瞬间
这次,我们来试着做“倍镜”
根据“循序渐进”的道理,我们先来做“机瞄”
得益于Godot强大的动画系统,我们可以十分方便地完成这项工作:
首先,添加一个“倍镜”(ker),使其作为gun的父节点

这样做的原因是:在之后我们可以直接移动倍镜,子节点gun也会跟着移动
大致是这样:

然后有请我们的主角AnimationPlayer:

点击它,跳转到动画编辑器窗口:

点击 动画 -> 新建


然后确定
确认是否为1秒(因为后续需要。当然,你改成其它的也没问题)

添加一个3D变换轨道

选择ker

把时间轴(蓝色的线)拖到0,然后在下方右键,添加一个关键帧

然后把时间轴拖到最后,然后在编辑器中移动ker的位置,将其移动到相机前面


插入关键帧

这样编辑器就可以自动补全两个关键帧之间的动画,来回拖动时间轴看一下效果吧
我们来添加代码控制这段动画:
打开player的脚本,转到_input()函数下,添加如下代码(我将鼠标右键命名为off)

这段代码首先检测off是否被按下(使用just的原因是:我们不希望这段动画持续触发)
如果按下,获取AnimationPlayer节点,然后用play()方法播放动画,参数如下:
(1)你要播放的动画的名称
(2)custom_blend意义暂未明确,暂时不用管
(3)播放速度
(4)是否可以倒放
(如果可以倒放,并且速度为负,则倒着播放动画)
所以这是以5倍速播放“新建动画”
接下来就会判断,off是否抬起,如果是,就以5倍速倒着播放“新建动画”
这样,一个简单地机瞄就完成了

这次,我们来试着做“倍镜”
根据“循序渐进”的道理,我们先来做“机瞄”
得益于Godot强大的动画系统,我们可以十分方便地完成这项工作:
首先,添加一个“倍镜”(ker),使其作为gun的父节点

这样做的原因是:在之后我们可以直接移动倍镜,子节点gun也会跟着移动
大致是这样:

然后有请我们的主角AnimationPlayer:

点击它,跳转到动画编辑器窗口:

点击 动画 -> 新建


然后确定
确认是否为1秒(因为后续需要。当然,你改成其它的也没问题)

添加一个3D变换轨道

选择ker

把时间轴(蓝色的线)拖到0,然后在下方右键,添加一个关键帧

然后把时间轴拖到最后,然后在编辑器中移动ker的位置,将其移动到相机前面


插入关键帧

这样编辑器就可以自动补全两个关键帧之间的动画,来回拖动时间轴看一下效果吧
我们来添加代码控制这段动画:
打开player的脚本,转到_input()函数下,添加如下代码(我将鼠标右键命名为off)

这段代码首先检测off是否被按下(使用just的原因是:我们不希望这段动画持续触发)
如果按下,获取AnimationPlayer节点,然后用play()方法播放动画,参数如下:
(1)你要播放的动画的名称
(2)custom_blend意义暂未明确,暂时不用管
(3)播放速度
(4)是否可以倒放
(如果可以倒放,并且速度为负,则倒着播放动画)
所以这是以5倍速播放“新建动画”
接下来就会判断,off是否抬起,如果是,就以5倍速倒着播放“新建动画”
这样,一个简单地机瞄就完成了
