跳转到正文

配置连击与武器

作

作者

作者

创建时间: 2026年10月21日更新时间: 2026年10月21日

目录

配置连击与武器

本篇把已经能打的近战或远程收进连击:UGCS_ComboAbility 只负责按表选招和推进 ComboStep,真正的攻击仍由子 Ability 完成。武器 Actor 提供 Trace、连击表和激活态;SetCurrentWeapon 只标记这次动作要用哪把武器,不是装备栏切换。

相关文档:实体与武器职责见 连击、武器与战斗实体。近战或远程闭环未通时,先回到 做一次近战攻击。

前置条件

  1. 角色已挂 Combat 组件并实现 IGCS_CombatEntityInterface。
  2. 至少有两段能独立激活的攻击 Ability(例如轻击第一段、第二段)。
  3. 这些子 Ability 已经授到 ASC 上。UGCS_ComboAbility 选行时会跳过 ASC 里不存在的 Ability 类。
  4. 需要武器 Trace 或按武器换表时,准备 AGCS_WeaponActor 子类。

1. 写连击表

新建 Data Table,行结构选 FGCS_ComboDefinition。最少两行:

行

MinComboStep

bResetComboStep

AbilityClass

第一段

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:

  1. 输入或 Gameplay Event 激活 ComboAbility。
  2. StartCombo / AdvanceCombo 按当前 ComboStep、事件标签和 TagQuery 选第一行匹配的定义。
  3. 选中后激活子 Ability,成功则 UpdateComboStep。第一段成功后步骤变为 1,第二段成功后变为 2。
  4. 选中带 bResetComboStep 且 MinComboStep > 0 的行会把步骤重置回 0。子 Ability 结束且没有下一步时,ResetCombo 清状态。

子 Ability 做真正的 HandleCollisionTraces 或 WaitForBulletEvent。不要让子 Ability 自己改 ComboStep,除非有意扩展这份契约。

4. 配置武器 Actor

继承 AGCS_WeaponActor 并填:

字段

作用

WeaponTags

查询和过滤武器

TraceDefinitions

激活时在所属者 Trace 组件上创建的武器 Trace

ComboDefinitionTable

这把武器对应的连击表

bGiveAbilitiesFromComboDefinitionTable

头文件约定:为 true 时按连击表授予其中的 Ability

UGCS_ComboAbility 只会激活 ASC 上已经存在的子 Ability。打开该开关后,仍要在项目的武器激活逻辑或 GGA AbilitySet 里把表里的 Ability 授出去,否则选招会跳过这些行。

权威端调用 SetWeaponActive(true) 会复制激活态,并刷新武器 Trace。SetCurrentWeapon 只标记“下一招用哪把”。可以同时有多把武器处于激活,但当前动作武器只有一个。

预期结果

连续两次轻击:ComboStep 从 0 到 1 再到 2,Debugger Combat 段能看到步骤和连击表名。停手或走到重置行后步骤回到 0。切换当前动作武器不会单独改变装备栏。

验证

  1. 第一次激活入口 Ability,子 Ability A 跑起来,GetComboStep 变为 1。
  2. 窗口内再次推进,子 Ability B 跑起来,步骤变为 2。
  3. 重置行或 ComboAbility 结束后,ResetComboState 把步骤清回 0,OnComboStepChangedEvent 触发。
  4. Debugger Weapon 段能看到当前武器、激活态和标签;Trace 段在武器激活后出现武器 Trace Handle。
  5. AnimBP 里没有连击计数变量,步骤只来自 Combat 组件。

常见失败

现象

先查

ComboAbility 立刻结束

实体 GetComboDefinitionTable 是否返回了表;表行 AbilityClass 是否已授到 ASC

永远停在第一段

第二段 MinComboStep 是否匹配当前步骤;AllowAdvanceCombo 是否拦住

有武器模型但没有武器 Trace

是否权威 SetWeaponActive(true);所属者有没有 Trace 组件;GetSourceComponentForTrace 能否解析网格

换武器后连击表不对

GetComboDefinitionTable 是否跟着 GetCurrentWeapon 走;SetCurrentWeapon 是否在出招前调用

把连击写进 AnimBP

步骤不会复制,Debugger 的 ComboStep 也不会变。改回 ComboAbility

下一步

连击和武器接上后,按 调试与排错 核对预测与权威结果。字段细节见 参数参考。