集成通用运动系统

准备工作
本文仅适用于同时购买了GCS和GMS,并希望将GMS整合到GCS中的用户。
在此之前,你应该至少了解GMS本身的使用,请至少看一看GMS_Demo项目中的几个角色是如何配置的。
背景
首先,GCS和GMS都属于GGF(通用游戏框架插件,我的All-In-One解决方案,但它还未发布)。
我希望我的产品能够保持相互之间的独立,模块化。因此GCS和GMS都有自己对应的配套项目,它们都是从我当前的All-In-One中分离出来的子集。
GCS专注于战斗本身,它的配套项目中的Demo部分包含一个简单的运动管理组件,它演示了如何在GCS中引入运动系统,同时还包含一个简单的武器管理组件,它演示了如何在GCS中引入装备管理。
Demo中的内容,你可以替换成别的实现,如:使用ALS/GASP或者我的GMS去替换GCS中的运动系统,或者使用别的库存/装备系统去替换GCS中的武器等。
获取合并项目
同时拥有GMS和GCS的用户,可以在Discord的#GMS-GCS-Integration频道获取经过合并的项目,如果你希望将GCS和GMS一起使用,那么这会很方便。
安装所需插件
GCS和GMS都使用了通用游戏系统(GGS),你需要同时安装GCSv1.3+,GMSv1.3+以及GGSv1.4+
你可能都需要面临手动编译插件的情况,所以最好将插件放入项目的Plugins文件夹下面。
整合GMS到GCS
完成运动系统的基础设置
你是将GMS整合到GCS,所以你至少应该已经熟悉和了解GMS本身的使用。你可以参考运动系统的角色配置,在GCS中完成运动系统的基础组件设置。
更具体点就是:GCS角色SkeletalMesh使用GMS的主动画蓝图,同时,你还需要参考ABP_Mannequin_Ext在GMS案例中的用法,将其Link倒GMS的主动画实例中,ABP_Mannequin_Ext是设置角色Montage布局的动画层。
然后将所有对BC_Demo_MovementManager
的引用替换为GMS的CharacterMovementSystemComponent
更替运动API
GCS的战斗接口中,有几个运动相关的API与GMS的API兼容,因此你可以继承自BC_GCS_CombatCore
或者修改BC_GCS_DemoCombatCore
,并按照指示替换API调用。

DemoCombatCore中的案例代码。

这一步就是将DemoMovementManager替换为了GMS的MovementSystemComponent。
武器与运动定义整合
在GCS_Demo中,DemoWeapon是通过WeaponAnimLayerSelections
来配置了不同的动画层,并通过在合适的时候调用RefreshWeaponAnimLayer
和UnlinkWeaponAnimLayer
来实现针对角色的状态,根据当前武器切换不同的动画层(不同的动画姿态)。
若采用GMS,你无需再手动调用武器上的动画层的刷新,而是在你的武器类中新增运动定义变量,然后在武器激活/取消激活的时候,为GMS运动系统组件添加/移除运动定义。
当运动API调用时,GMS运动系统组件会自动刷新对应的控制/动画层逻辑。


总结
理想情况下,当你在GCS中切换武器时,会切换GMS组件上的运动定义。当你通过CombatInterface调用
运动相关API时,会通过GMS组件来执行具体的运动控制/动画替换。
