继续上半周的工作。在不熟悉Montage动画中各种方法的情况下,最开始的想法是,创建一个Time变量,记录从开始播放到当前播放的时间,重新播放时,将Montage动画在刚才记录的位置进行播放。
先做暂停的部分,这个部分一点单击右键,就会发现有一个方法叫做:Montage Pause。这个方法字面意思就很明白了。暂停Montage。(这里有一个小插曲,我最开始选的是Montage Stop,这个方法虽然可以停止正在播放的动画,但是也会会造成动画回复到起始状态,不能正确的显示当前位置。)
接着先一次的时候那个Play的判断布尔值,如果play为假的时候那么就进行这个方法:
通过查找,我找到了一个叫做Montage Play的方法:可以看到在return value type的选项中,可以选择Duration选项,可以看到这个选项的意思是 也就是montage播放的长度。将这个值赋给Time,之后可以看到输出值里面有个In Time To Start Montage At。这个接口就是决定了接下来会在哪个位置播放动画。
在之后的预览发现,Time的值一直是一个定值,无法改变,这怎么办呢。之后就想到了设置一个定时器:可以时刻获取从montage开始到点击暂停之间的时间。之后两个时间一减,就可以得到已经播放的时间。
使用这种方法之后,发现在使用1倍速播放时,一切都是正常的,但是在使用其他倍速的时候都会出现问题,因次还需要在时间节点上乘上需要的倍速的系数,这样就增加了运算量。
之后通过自己的尝试,发现了原来UE4里面自带了一个方法Montage Resumes,让我们看一下这个方法的解释:Resumes a paused Animation Montage ,这个方法就可以直接得到当前关卡中被暂停的Montage动画,然后将它激活,这样动作还是从暂停的地方开始播放。
全部蓝图:
接下来让我们看一下效果:
倍速
暂停功能
再次开始
后退
接下来,让我们设置一下相机视角的转动,这样可以使用户更好地体验。设置相机的旋转为局部坐标系下的。通过A和D键可以让相机分别向左右旋转。
效果:
以上就是本周完成的观看模式的开发。