UE Gameplay实例49(高级蒙太奇动画连招)

本文介绍了如何在Unreal Engine中实现一个高级的战斗连招动画系统,利用UE的强大动画编辑器进行连招设计。通过创建特定的蓝图类和动画蓝图,实现了玩家角色的连招动作,包括输入事件绑定、相机视角转换、蒙太奇动画控制等关键步骤。同时,还涉及到C++与蓝图的结合,确保连招的流畅性和可扩展性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


这个连招系统是在YTB上搬运过来的,也是自我接触UE以来,认为最好用,最高级的一个连招使用方式,
非常完美的利用了UE中强大的动画编辑器来实现连招,对于程序员来说轻松、省事;对于策划来说,
我可以随便编辑连招了,控制玩家游玩的连招难度,功能再进一步封装就可以商用了,Produce Ready

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
展示的3个连招全部都带RootMotion,并且开启了RootMotion支持,使用的资源索引
Tutorial: Advanced combo animation system - Unreal Engine 4 + Unreal Engine 5
Frank_Slash_Pack动画包
在这里插入图片描述
在这里插入图片描述
场景资源是UE自带的,再VREditor目录下面,需要打开Engine Content


#1. 搭建框架蓝图
在这里插入图片描述
需要搭建3个框架类,分别是:
PlayerController:用于控制玩家的基础运动
GameMode:连招使用的相关游戏设置
Character:执行连招的角色,我们控制的角色

#1-1. ComboController类蓝图编程
在这里插入图片描述
Project Settings中绑定移动相关的按键,绑定的轴可以有正负,间接说明可以使用一个输入事件来对应2个变化
在这里插入图片描述
Get Controlled Pawn:获取控制器控制的玩家,也就是控制器作用到的角色
Get Control Rotation:获取控制角色的旋转方向
Get Forward Vector:获取控制器的前进方向,如果是负数轴,则是后退
Normalize:将获取到的前进方向进行规格化,因为我们只需要方向而已
Add Movement Input:添加移动输入,控制器的方法,作用到Pawn

Target:添加移动输入的目标,约定为Pawn类型,可以被操控的类型,Character的父类
World Direction:控制器操作的方向
Sacle Value:移动轴缩放,[-1, 1]之间取值,对应我们的2个方向
Force:是否强制进行移动,强制移动会忽略不能移动的输入计算

#1-2. GameMode
在这里插入图片描述
在视图中找好一个角度,使用杂项中的场景相机创建这个角度对应的相机
在这里插入图片描述
GameMode中,开始运行的时候将控制器的视角交给我们定义好的相机,因为我们是上帝视角预览,
并不是角色自带相机进行预览,SetViewTargetwithBlend可以将游戏的相机混合转换

Target:约束为PlayerController,哪个控制需要转移相机视角
New View Target:新的视角目标,约束为Actor类型
Blend Time:相机从控制器到新视角使用的时间
Blend Func:混合使用的曲线方式
在这里插入图片描述
Blend Exp:混合的倍速
Lock Outgoing:是否锁定出去的最后一帧作为混合

在这里插入图片描述
设置GameMode相关的参数,将默认框架类引用到我们创建的框架类

#1-3. ComboHero角色类
在这里插入图片描述
角色类需要有动画蓝图支持,我们在角色骨架网格体中使用了动画蓝图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
调整网格体的转向和箭头的一直,调整网格体的高度和自带的Capsule一致

在这里插入图片描述
添加我们需要的按键绑定,Action是按键,Axis是轴
在这里插入图片描述
当我们按键的时候执行蒙太奇动画,使用切开片段的方式来执行动画,因为连招都是一帧切换的,使用切开片段可以省事快捷
Play Montage是播放蒙太奇动画的蓝图节点
#. Input 输入端口
In Skeletal Mesh Component:输入的骨架网格体组件,Character中叫Mesh的变量
Montage to Play:需要播放的蒙太奇动画
Play Rate:蒙太奇动画中所有动画的播放倍速
Starting Position:蒙太奇播放的起始位置
Starting Section:蒙太奇开始播放的切开片段
#. Output 输出端口
On Completed:播放蒙太奇完成的回调执行
On Blend Out:当播放蒙太奇开始出混合的时候且没有被中断时回调执行
On Interrupted:当播放蒙太奇被中断或取消时回调执行
On Notify Begin:当播放蒙太奇时候有蒙太奇通知且开始通知回调执行
On Notify End:当播放蒙太奇时候有蒙太奇通知且结束通知回调执行
Notify Name:当前蒙太奇播放过程中的有通知,当前通知的名称


#2. 动画蓝图及连招接口
切开片段动画连招的制作思路:使用AnimNotifyState来监听需要有效执行的连招,在Received_NotifyBeginReceived_NotifyEnd回调
阶段分别执行不同的逻辑达到切开片段动画连招的效果;在Received_NotifyBegin的时候,表示我们进入了有效的连招攻击收尾,
可以执行下一个切开片段动画,在Received_NotifyEnd的时候,我们需要恢复连招到默认的状态

#2-1. 连招接口定义
在这里插入图片描述
在蓝图类中选择创建蓝图接口,接口是任意类都可以调用的,实现类回调
在这里插入图片描述
在接口中添加2个方法,第一个用于回调下一个动画切开片段,第二个方法用于重置回默认的切开片段
在这里插入图片描述
在第一个接口方法中添加输入参数,用于指定回调的切开片段名称,第二方接口方法默认即可

#2-2. 动画蓝图连招接口
在这里插入图片描述
在动画蓝图的动画图表中,使用我们之前创建的混合空间,将SpeedDirection提升为变量,同时使用DefalutSlot插槽,
插槽用于蒙太奇动画,蒙太奇动画需要插槽才能播放,使用默认的插槽就可以了
在这里插入图片描述
在事件图表中,更新我们的Speed变量,播放混合空间的动画
Try Get Pawn Owner:尝试获取当前动画蓝图归属的Pawn,也就是我们控制的角色
在这里插入图片描述
在这里插入图片描述
在类设置中实现我们连招的切开片段接口
在这里插入图片描述
在动画蓝图类中实现接口中的方法
在这里插入图片描述
当接收到SetNextSection的时候,将传递过来的Name赋值到Pawn中,用于连招的下一次播放
当接收到SetDefaultSection的时候,重置Pawn中的Section到默认名称


#3. 蒙太奇动画和动画状态通知
使用动画的状态通知来告知我们播放的动画进度和一个有效的连招时间点,在时间点的范围表示可以切换到下一个切开的动画片段,
在动画状态通知类中暴露下一个切开片段名称,在蒙太奇动画中指定下一个切开片段动画名称

#3-1. 连招动画状态通知
在这里插入图片描述
新建蓝图类继承自AnimNotifyState
在这里插入图片描述
实现类中的Received Notify BeginReceived Notify End
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Received_NotifyBegin的时候,我们需要告知需要播放的下一个切开动画片段,同时将NextSection暴露给编辑器
Mesh Comp是这个动画状态通知所拥有的骨架网格体,通过Get Anim Ins

<think>好的,我现在需要回答用户在Unreal Engine中如何实现过场动画与游戏玩法之间的无缝衔接的问题。首先,我得回忆一下Unreal Engine的相关功能,特别是过场动画系统Sequencer和Gameplay的整合。用户可能想知道具体的步骤和最佳实践,所以需要分点说明,结构清晰。 首先,过渡方式。过场动画和游戏玩法的切换通常会有黑屏或镜头突变的问题,应该考虑使用摄像机混合和动画蒙太奇。摄像机混合可以在不同镜头之间平滑过渡,而动画蒙太奇可以让角色动作更自然衔接。比如,使用Camera Blend节点在Sequencer中设置过渡时间,这样镜头不会突然切换,用户会感觉更流畅。 然后是状态同步。过场动画中的角色状态需要与Gameplay同步,否则动画结束后角色可能处于错误的位置或状态。可能需要使用Level Streaming或Sublevel来加载不同的场景部分,确保资源无缝加载。此外,使用Event Tracks触发游戏逻辑,比如在过场动画结束时触发事件来恢复玩家控制,这样可以避免控制权切换时的突兀感。 接下来是避免卡顿。资源预加载是关键,特别是大型动画或场景切换时,使用异步加载避免游戏卡顿。Unreal的Async Loading Screen插件可以显示加载界面,同时后台加载资源,这样用户体验更好。同时,优化动画资源,减少不必要的骨骼和粒子效果,提升性能。 还有输入处理。在过场动画播放期间,可能需要禁用玩家输入,但需要确保输入禁用和重新启用的时机正确,防止玩家操作干扰动画播放。使用Gameplay Tags或Input Contexts来管理输入状态,确保过渡平滑。 另外,镜头控制也很重要。过场动画的摄像机应该与Gameplay摄像机平滑衔接,使用Camera Actor和Camera Rig Rail等工具来控制镜头移动。在Sequencer中调整摄像机的Transform曲线,确保移动和旋转的平滑过渡。 测试和调试部分,Unreal提供了各种工具,如Profiler和Stat Unit,用于监控性能,确保过场动画播放时帧率稳定。通过动画通知和调试绘图,检查角色位置和状态是否正确,及时调整参数。 最后,参考引用中的内容,提到动画调试和优化是重要步骤,Unreal提供了多种工具。需要将这些工具的使用方法融入回答中,比如使用动画蓝图调试窗口检查状态机过渡,或者在Sequencer中调整播放速率避免掉帧。 可能还需要考虑使用Matinee和Sequencer的区别,但Sequencer是更现代的工具,应该推荐使用。另外,提到Level Sequence和如何与Blueprint集成,触发特定的游戏事件。 现在需要确保回答符合系统级指令,如正确使用LaTeX格式,但问题涉及的是引擎操作,可能数学公式较少,但如果有变量或参数,需要用$包裹。例如,提到插值函数时,可能会用$t$表示时间参数,如插值公式$f(t) = (1 - t) \cdot a + t \cdot b$,不过可能这类内容不多,需注意检查。 生成的相关问题需要与主题相关,比如如何调试动画过渡、优化资源加载的方法,或者输入管理的技巧。 总结步骤:过渡处理、状态同步、资源预加载、输入管理、镜头控制、测试优化。每个部分给出具体方法和工具,结合示例和引用,确保信息准确可靠。</think>在Unreal Engine中实现过场动画(Cinematic)与Gameplay的无缝衔接,需结合动画系统、关卡流送和逻辑控制技术。以下是具体方法与最佳实践: --- ### 1. **镜头过渡平滑化** - **摄像机混合(Camera Blending)** 使用Sequencer中的`Camera Cut Track`配合混合时间参数,通过`Camera Blend`节点实现镜头渐变。例如设置混合时间$t=1.5s$,避免画面突变。 - **动画蒙太奇(Anim Montage)** 在过场动画结束时触发角色动作蒙太奇,确保角色动作与后续Gameplay自然衔接[^1]。 --- ### 2. **状态同步与资源管理** - **角色状态同步** 通过`Event Track`在Sequencer中触发游戏逻辑事件(如保存角色位置、同步血量),并利用`Level Streaming`动态加载子关卡,避免加载卡顿。 - **资源预加载** 使用`Async Load Asset`或`Level Streaming`的`Always Loaded`标记预加载过场动画所需资源,结合`Loading Screen`插件隐藏加载过程[^1]。 --- ### 3. **输入控制与权限切换** - **输入上下文(Input Context)** 在过场动画播放时,通过`Enhanced Input`系统的`Input Context`暂时禁用玩家输入,并在结束时恢复。示例代码: ```cpp // 禁用输入 PlayerController->PushInputComponent(DisableInputComponent); // 动画结束后恢复 PlayerController->PopInputComponent(DisableInputComponent); ``` --- ### 4. **动态镜头衔接** - **摄像机轨道(Camera Rig Rail)** 在Sequencer中使用`Camera Rig Rail`控制摄像机移动路径,结合曲线编辑器调整运动速度,确保与Gameplay镜头的平滑过渡。 - **镜头抖动消除** 通过`Camera Shake`的`Oscillation`参数调整,减少镜头切换时的抖动感。 --- ### 5. **性能优化与调试** - **异步渲染与LOD** 对过场动画中的高模角色启用`LOD(Level of Detail)`,并使用`Movie Render Queue`进行异步渲染。 - **调试工具** 利用`Stat Unit`监控帧率,通过`Animation Blueprint`的调试窗口检查动画状态机过渡逻辑。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值