配置连击与武器
本篇把已经能打的近战或远程收进连击:UGCS_ComboAbility 只负责按表选招和推进 ComboStep,真正的攻击仍由子 Ability 完成。武器 Actor 提供 Trace、连击表和激活态;SetCurrentWeapon 只标记这次动作要用哪把武器,不是装备栏切换。
相关文档:实体与武器职责见 连击、武器与战斗实体。近战或远程闭环未通时,先回到 做一次近战攻击。
前置条件
- 角色已挂 Combat 组件并实现
IGCS_CombatEntityInterface。 - 至少有两段能独立激活的攻击 Ability(例如轻击第一段、第二段)。
- 这些子 Ability 已经授到 ASC 上。
UGCS_ComboAbility选行时会跳过 ASC 里不存在的 Ability 类。 - 需要武器 Trace 或按武器换表时,准备
AGCS_WeaponActor子类。
1. 写连击表
新建 Data Table,行结构选 FGCS_ComboDefinition。最少两行:
行 | | | |
|---|---|---|---|
第一段 | 0 | false | 轻击 Ability A |
第二段 | 1 | false | 轻击 Ability B |
收招回入口(可选) | 2 | true | 收招或再次入口 Ability |
MinComboStep 为 0 的行只在步骤 0 可选。非重置行会在当前步骤超过该门槛后被跳过。需要按事件或标签过滤时再填 EventTag、EventInstigatorTagQuery、TagQuery。
2. 让实体返回这张表
UGCS_ComboAbility 从战斗实体的 GetComboDefinitionTable 读表,读不到会打 Error 并停选招。没有连击就返回空;有当前武器时,常见实现是把武器上的 ComboDefinitionTable 转出去。
不要在 AnimBP 里用状态机推进连击。Montage 只负责动画窗口和 Notify 里的攻击请求;步骤复制和选招属于 ComboAbility 与 Combat 组件。
3. 用 ComboAbility 当入口
给角色授一个 UGCS_ComboAbility 子类作为入口 Ability:
- 输入或 Gameplay Event 激活 ComboAbility。
StartCombo/AdvanceCombo按当前ComboStep、事件标签和 TagQuery 选第一行匹配的定义。- 选中后激活子 Ability,成功则
UpdateComboStep。第一段成功后步骤变为 1,第二段成功后变为 2。 - 选中带
bResetComboStep且MinComboStep > 0的行会把步骤重置回 0。子 Ability 结束且没有下一步时,ResetCombo清状态。
子 Ability 做真正的 HandleCollisionTraces 或 WaitForBulletEvent。不要让子 Ability 自己改 ComboStep,除非有意扩展这份契约。
4. 配置武器 Actor
继承 AGCS_WeaponActor 并填:
字段 | 作用 |
|---|---|
| 查询和过滤武器 |
| 激活时在所属者 Trace 组件上创建的武器 Trace |
| 这把武器对应的连击表 |
| 头文件约定:为 true 时按连击表授予其中的 Ability |
UGCS_ComboAbility 只会激活 ASC 上已经存在的子 Ability。打开该开关后,仍要在项目的武器激活逻辑或 GGA AbilitySet 里把表里的 Ability 授出去,否则选招会跳过这些行。
权威端调用 SetWeaponActive(true) 会复制激活态,并刷新武器 Trace。SetCurrentWeapon 只标记“下一招用哪把”。可以同时有多把武器处于激活,但当前动作武器只有一个。
预期结果
连续两次轻击:ComboStep 从 0 到 1 再到 2,Debugger Combat 段能看到步骤和连击表名。停手或走到重置行后步骤回到 0。切换当前动作武器不会单独改变装备栏。
验证
- 第一次激活入口 Ability,子 Ability A 跑起来,
GetComboStep变为 1。 - 窗口内再次推进,子 Ability B 跑起来,步骤变为 2。
- 重置行或 ComboAbility 结束后,
ResetComboState把步骤清回 0,OnComboStepChangedEvent触发。 - Debugger Weapon 段能看到当前武器、激活态和标签;Trace 段在武器激活后出现武器 Trace Handle。
- AnimBP 里没有连击计数变量,步骤只来自 Combat 组件。
常见失败
现象 | 先查 |
|---|---|
ComboAbility 立刻结束 | 实体 |
永远停在第一段 | 第二段 |
有武器模型但没有武器 Trace | 是否权威 |
换武器后连击表不对 | |
把连击写进 AnimBP | 步骤不会复制,Debugger 的 ComboStep 也不会变。改回 ComboAbility |
下一步
连击和武器接上后,按 调试与排错 核对预测与权威结果。字段细节见 参数参考。