跳转到正文

战斗攻防流程

本文简要的阐述了通用战斗系统中的战斗攻/防流程,帮助你更容易地理解GCS的工作流。

作

作者

作者

创建时间: 2025年11月24日更新时间: 2026年10月12日

目录

概述

本文说明 Generic Combat System(GCS)中一次攻击如何从请求进入命中处理,以及目标如何结算属性变化并生成战斗结果。

进攻流程

玩家、AI 或其他接入相应 Ability 与战斗组件的 Actor 都可以发起攻击。近战与子弹使用不同的请求和命中路径,但都会根据攻击定义准备命中效果。

近战攻击

  1. Ability 激活攻击动作,并准备 UGCS_AttackRequest_Melee,其中包含攻击定义行和要控制的 Trace 标签。
  2. 动画中的 GCS_ANS_AttackTrace 保存该请求数据;它本身不是运行时 Trace 执行器。
  3. Ability/项目逻辑在攻击窗口调用 UGCS_AbilityTask_CollisionTrace 的 AddMeleeRequest 与 RemoveMeleeRequest。任务通过 UGCS_TraceSystemComponent 启停匹配的 Trace,并在命中时把目标和命中信息通知 Ability。
  4. Ability 或项目逻辑根据 FGCS_AttackDefinition 决定对命中目标应用哪些 Gameplay Effect。

子弹攻击

  1. UGCS_AttackRequest_Bullet 通过 BulletDefinition 行配置子弹和关联的攻击定义,也可配置发射/瞄准来源、Socket、偏移及可选的目标预设。
  2. Ability 的 GameplayEvent 流将 BulletRequest 放入事件数据的 OptionalObject。UGCS_AbilityTask_BulletTrace 监听指定事件标签,读取请求后调用 UGCS_BulletSystemComponent 生成子弹。
  3. BulletSystemComponent 根据 BulletDefinition 引用的 AttackDefinition 准备命中效果;命中后的 Gameplay Effect 应用由服务器权威处理。
子弹的本地预测只覆盖玩家发起的首批子弹轨迹与视觉表现,不会在预测子弹上应用 Gameplay Effect。实际命中与效果结算由服务器处理;链式子弹和发射器子弹也由服务器生成。

调整 Gameplay Effect

FGCS_AttackDefinition 可以提供目标 Gameplay Effect 或 EffectContainer、攻击标签和 SetByCaller 数值。攻击流程可在应用前按游戏规则继续调整效果规格;例如将攻击参数传入计算,添加动态标签,或根据子弹飞行距离修改数值。

伤害计算

GCS 提供攻击请求、命中效果和结果处理之间的通用接线。具体伤害、抗性和属性变化由项目的 Gameplay Effect 与伤害执行计算定义。

防守流程

受击者收到并执行 Gameplay Effect 后,属性系统会把 PostGameplayEffectExecute 回调转发给该实体配置的 CombatFlow。CombatFlow 根据属性变化构造并注册攻击结果;结果随后经战斗系统组件复制,并交给配置的 AttackResultProcessor 处理。

详细的回调、结果字段和处理器执行策略见战斗流。

总结

GCS 将攻击请求、近战 Trace、子弹生成、Gameplay Effect 结算和攻击结果处理拆成可配置的环节。近战与子弹的命中路径不同;受击后的属性处理与反馈则汇入目标的 CombatFlow。