做一次远程攻击
本篇做出最小远程:一份子弹定义、一条子弹请求,Ability 用 WaitForBulletEvent 监听 Gameplay Event,从 OptionalObject 取出 UGCS_AttackRequest_Bullet 再交给子弹组件。预测弹只负责轨迹和表现;Gameplay Effect、链式弹和 Emitter 后续弹只在服务器发生。
相关文档:Flow 还没有 Result 时先看 注册第一条攻击结果;子弹契约见 子弹运行时;请求字段见 攻击定义与请求。
前置条件
- 已按 挂上战斗组件 挂好 Combat、Bullet 组件;命中检测还需要 Trace 组件。目标 Flow 已能按 注册第一条攻击结果 从属性回调注册 Result。
- 权威端已
InitializeAbilitySystem。 - 已有一行
FGCS_AttackDefinition,其中的TargetEffectClass会改目标属性。 - 准备一个实现
IGCS_BulletInterface的子弹 Actor。默认可继承AGCS_BulletInstance或AGCS_SphereBulletInstance。
1. 写子弹定义
新建 Data Table,行结构选 GCS Bullet Definition(FGCS_BulletDefinition):
字段 | 本篇建议 |
|---|---|
| 实现 |
| 先 1 发、角度 0 |
| 例如 1500,保证能看见轨迹 |
| 指向已有的攻击定义行 |
| 至少一条命中 Trace;会覆盖子弹实例类上的 Trace |
数量、扇形间隔和速度都在定义里,不在请求里改弹种。链式和 Emitter 本篇留空,它们只在服务器生成。
2. 填子弹请求
创建 UGCS_AttackRequest_Bullet:
字段 | 作用 |
|---|---|
| 指向第 1 步的子弹定义行 |
| 发射朝向: |
| 相机朝向焦点以外才需要;找不到 Socket 就回退到来源位置 |
| 需要已锁定目标才开火时打开 |
本篇用 PawnForward 或 CameraTowardsFocus 即可。Custom 必须覆写 GetTargetingTransform。武器起点还可以走武器接口的 GCS_GetTargetingStartTransform。
3. 用 Event 把请求交给 Task
在远程 Ability 里调用 WaitForBulletEvent:
- 填要监听的 Gameplay Event 标签。
bInUseScopedPredictionWindow默认 true,本地玩家开火时会包一层FScopedPredictionWindow。- 事件触发后,Task 从
EventData.OptionalObject取出UGCS_AttackRequest_Bullet,再交给UGCS_BulletSystemComponent。 - 成功走
OnBulletSpawned,失败走OnBulletSpawnFailed。
动画窗口可以放 GCS_ANS_BulletTrace 存同一份请求,再在窗口里发带 OptionalObject 的 Gameplay Event。Notify 同样不是运行时发射器。
ValidateAttackRequest 可覆写。默认只检查请求有效、BulletDefinitionHandle 能取出定义行。射速、弹药、资源消耗等合法性由项目自己补,不要假设组件会拒发。
预期结果
本地玩家开火后,客户端立刻看到弹道;Debugger Bullet 段出现预测中的 Entry。服务器确认后,Entry 变成已确认,命中才应用 GE。客户端预测弹不会改属性。
验证
- 打开 Gameplay Debugger Combat 分类,打出一发后看 Bullet 段:Entry、实例、Pending / Confirmed / LocalPredicted 计数。
- 预测弹有轨迹和特效,目标属性不变。
- 服务器窗口能看到同一 Entry,命中后 Attack Result 出现。
- 配置了 Chain 或 Emitter 时,后续弹只出现在服务器,客户端不会自己再生成一批。
LogGCS_Bullet提到 Verbose,能看到生成、确认或否决。
常见失败
现象 | 先查 |
|---|---|
Event 到了但不生成 | |
有弹道没有 GE | 先确认是不是预测弹。预测弹不应用 GE 是契约,不是漏接 |
服务器也没有 Entry | 拥有客户端是否走到服务器生成;AI / 非本地控制应走权威生成 |
| 类是否实现 |
方向不对 | |
连发不受控 | 默认不校验射速和资源。在覆写的 |
下一步
远程闭环通了再接 配置连击与武器。预测和权威对不上时看 调试与排错。