最近有个哥们给我看他们最近在做的一个游戏,其中有这样一段镜头
https://www.zhihu.com/video/1171378736917364736运用到了一个很常用的过场方式,就是平时我们所说的无缝过场。过场动画不通过黑屏转换,而是通过运镜来代入。这是一种比较容易实现但又能有效提高游戏代入感的技巧,推荐大家多在游戏内使用。本文会简要介绍一下这种过场动画的实现方式。
过场动画一般有两种切入方式:渐变和融合(Fade & Blend)。融合就是上个视频里那样,从玩家相机利用blend函数切换到过场相机。渐变是先黑屏,然后切相机播放过场,结束时再黑屏然后回到玩家相机。
https://www.zhihu.com/video/1171381068480565248一般来说,当过场动画在玩家附近发生时,多采用融合相机,增强代入感;当过场动画离玩家过远或者剧情不连续时,使用渐变方式。这两种切换方式的主要内容类似,主要有以下几点
一、输入及移动控制
在播放过场时,一般需要玩家静止或按照一定路线移动。无论是哪种方式,一般都需要剥夺玩家控制权(也有一些过场需要玩家控制,通过缓慢移动的方式展开剧情,这种的实现方式需要借助外部事件,在此不作讨论)。所以在播放和停止Sequence时要注意屏蔽输入和重置玩家状态。【Sequencer的播放设置里也有是否屏蔽输入的选项,一般项目勾上这个也就够用了】
二、获取游戏内物体
UE4的Sequencer组件给我们提供了很大的方便,只要是摆在关卡里的东西,都可以放进Sequencer里。
如果你添加的物体是蓝图,还可以在其右侧的“+”内找到“添加事件轨道”
在事件轨道添加关键帧,就可以触发相应事件
比如在第一个视频里,我那个哥们应该在镜头移动过程中依次调用了生成怪物A--播放A的溶解特效--A磨爪子--生成怪物B--播放B的溶解特效--B吼叫--AB发动攻击等事件。
对于一些一开始没有出现在游戏里的Actor(典型的,比如玩家),我们可以点Alt+s模拟运行,这个时候就应该在关卡里看到玩家了,然后再选中玩家,点“添加轨道”就可以把玩家轨道放置进Sequencer。
三、镜头衔接
对于渐变类型的动画,Sequencer可以很容易地通过轨道内的fade轨道实现。对于融合型的过场,个人推荐使用SetViewTargetWithBlend函数,从主相机切换至过场相机(需要写一些代码,原理简单就不再说了)。
总的来说,其实就是一个使用Sequencer的范例。自从4.17/18左右,UE开始疯狂增强Sequencer组件,现在的Sequencer其实已经相当强大和易用了,希望大家好好利用它提高自己游戏的过场品质。