Skip to main content

子弹、状态、目标选择与召唤机制

本页于 2026-10-15 整合现有功能稿、飞书内容及客户端 origin/develop@7f0636c9 的功能资料。原 draft/unknown 不因整理自动变为批准;设计规则、源配置与运行结果分别说明。本次只做文档及源码审阅,没有执行游戏功能测试。

适用范围与冲突裁决边界​

这是技能可使用的机制设计库,参数示例不代表每个英雄都使用,也不是当前引擎逐项完成声明。英雄独立规则优先:阿斯特拉高抛只命中快照落点;赛芙拉返回不造成沿途伤害;红品第二代禁止继续终末派生。旧“分裂层数3”与同源“子弹不再次分裂”冲突,当前红品采用明确的两代/每技能20对象、同屏100对象预算,不开放无限继承。

弹射和穿透复合按分裂→弹射→穿透判定;分裂后母体销毁,子体独立继承剩余机制;弹射优先找未命中目标,耗尽后才沿最后方向穿透。原文普通抛物线追踪建议不覆盖阿斯特拉的固定落点。下面完整保留机制、参数、视觉与召唤字段;旧爆气触发和旧英雄技能模板已被新版纯CD三态与逐英雄技能替代。

一、设计总览​

1.1 核心设计理念​

子弹系统驱动:基于子弹技能系统的弹道形式和机制组合设计英雄技能

元素分类:火、冰、电三元素体系,每个元素对应专属弹道形式

词条叠加由当前配置MaxStacks决定,0表示无上限;旧统一10个上限不作为现行通用规则。

可视化优先:弹道形式清晰区分英雄特色

1.2 弹道形式与元素对应​

元素专属弹道形式核心特性适用场景
🔥 火抛物线高度变化,视觉冲击强越过前排,范围爆发
❄️ 冰直线+追踪精准命中,穿透稳定单体高伤,穿透输出
⚡ 电闪电链瞬间链接,快速弹射连锁伤害,群体打击

1.3 机制组合体系​

五大机制(参考子弹技能系统):

分裂:命中后产生新子弹

弹射:命中后在目标间弹射

穿透:穿过敌人继续飞行

折射:击中障碍物后反弹

停留返回:飞行一定距离后停留并返回

1.4 子弹释放方式​

散射(Scatter Shot):

定义:单次攻击发射多个子弹,子弹之间有固定夹角

夹角参数:spread_angle,单位为度(°)

发射方式:从英雄位置同时发射所有子弹,或快速连续发射

排列方式:扇形布局(fan)、并列布局(parallel)、随机散射

适用场景:提升命中概率,覆盖更广范围

连射(Multi-Shot):

定义:连续发射多次子弹,每次发射之间有固定时间间隔

间隔参数:fire_interval,单位为秒(s)

发射逻辑:触发攻击动作后,在指定时间间隔内连续发射所有子弹

子弹数量:由bullet_count参数控制

适用场景:提升单位时间内输出,配合爆发增益使用

散射与连射叠加规则:

✅ 允许叠加:散射和连射可以同时生效

叠加示例:散射(2发,夹角15°)+ 连射(3次,间隔0.1秒)= 实际发射2×3=6发子弹

优先级:先执行散射配置,再按间隔执行连射

视觉效果:所有子弹正常显示弹道特效

释放方式对比:

特性散射连射散射+连射
发射时机同时/快速连续有时间间隔有时间间隔
子弹分布空间角度分布时间顺序分布空间+时间分布
主要优势扩大命中范围提升爆发伤害范围+伤害双重提升
典型参数spread_angle: 30°fire_interval: 0.1s两者同时配置
适用条件扇形覆盖连续命中同时需要覆盖与连续命中
参数示例:
// 散射配置{ "attack_mode": "scatter_shot", "bullet_count": 3, // 散射子弹数量 "fire_interval": 0.05, // 每发间隔(秒) "spread_angle": 30, // 散射总角度(°) "bullet_layout": "fan", // 排列方式:fan/parallel/random "first_angle_offset": -15 // 第一发角度偏移(-spread_angle/2)}// 连射配置{ "attack_mode": "multi_shot", "bullet_count": 3, // 连射子弹数量 "fire_interval": 0.1, // 每发间隔(秒) "sequential": true // 是否顺序发射(true=依次,false=同时)}// 散射+连射配置{ "attack_mode": "scatter_multi_shot", "scatter_count": 2, // 每次散射子弹数 "multi_shot_count": 3, // 连射次数 "fire_interval": 0.1, // 连射间隔 "spread_angle": 20, // 散射角度 "total_bullets": 6 // 总子弹数(2×3)}

二、子弹核心机制详解​

2.1 分裂机制 (Split)​

触发时机: 子弹击中目标后立即触发

参数定义:

{ "split_count": 2, // 分裂数量: 产生的新子弹数量 "split_range": 2.5, // 分裂范围: 寻找目标的最大半径(格子单位) "split_damage_ratio": 0.5, // 分裂伤害比例: 新子弹伤害倍率 "split_bullet_id": "child_bullet_id" // 分裂子弹类型ID(空则复制自身)}

核心逻辑流程:

1. 母子弹击中目标 → 触发伤害结算2. 判断分裂数量 > 03. 在分裂范围内寻找敌人: - 优先选择未分裂过的目标 - 距离优先: 优先选择最近的敌人 - 最多选择 split_count 个目标4. 为每个目标生成新子弹: - 伤害 = 母子弹伤害 × split_damage_ratio - 方向 = 从命中点指向新目标 - 继承母子弹的剩余机制(弹射/穿透/折射/停留)5. 母子弹销毁

视觉表现:

母子弹命中时产生分裂爆炸特效

每个新子弹从命中点飞向新目标

建议不同分裂数使用不同特效:

2分叉: V字形分裂光效

3分叉: 三叉戟形光效

4分叉: 十字形光效

注意事项:

分裂后的子弹不再再次触发分裂,避免无限分裂

分裂范围较小(1.5-2.5格)时需要明显视觉提示

金色卡牌分裂建议伴随音效升级

2.2 弹射机制 (Bounce)​

触发时机: 子弹击中目标后,若有剩余弹射次数则触发

参数定义:

{ "bounce_count": 3, // 弹射次数: 总共可弹射的次数 "bounce_range": 3.0, // 弹射范围: 寻找下一个目标的最大半径 "bounce_damage_decay": 0.7, // 弹射伤害衰减: 每次弹射伤害倍率 "bounce_damage_decay_mode": 1, // 衰减模式: 1=每次都衰减, 0=不衰减 "bounce_tracking": true, // 是否追踪: 新子弹是否追踪目标 "bounce_priority_target_type": 0 // 优先目标类型: 0=最近, 1=标记目标}

核心逻辑流程:

1. 子弹击中目标 → 触发伤害结算2. 判断 bounce_count > 0: - 是: 继续步骤3 - 否: 子弹销毁3. 弹射次数 -14. 在弹射范围内寻找下一个目标: - 优先级: 标记目标 > 优先级类型(最近/随机/最低血) - 排除当前命中的目标5. 计算新方向: - 有追踪: 持续指向新目标 - 无追踪: 按原方向偏转角度飞向新目标6. 计算新伤害: - bounce_damage_decay_mode=1: 伤害 = 原伤害 × bounce_damage_decay - bounce_damage_decay_mode=0: 伤害 = 原伤害7. 继续飞行8. 若 bounce_count = 0 时击中目标 → 不再弹射,子弹销毁

视觉表现:

每次弹射产生电弧连接特效

弹射轨迹显示虚线或光链

不同弹射次数使用不同特效:

2次: 蓝色电弧

3次: 青色电弧

4次+: 紫色电弧+粒子

注意事项:

弹射次数为0时不触发弹射,直接销毁

范围内无目标时,子弹继续直线飞行直到超出边界或时间超时

弹射优先级需要支持Roguelike配置修改(如优先标记目标)

2.3 穿透机制 (Penetrate)​

触发时机: 子弹击中目标时

参数定义:

{ "penetrate_count": 1, // 穿透次数: 可穿透的目标数量 "penetrate_damage_decay": 0.8, // 穿透伤害衰减: 每次穿透伤害倍率 "penetrate_damage_decay_mode": 1,// 衰减模式: 1=每次都衰减, 0=不衰减 "penetrate_after_split": true, // 分裂后是否保留穿透 "penetrate_after_bounce": true // 弹射后是否保留穿透}

核心逻辑流程:

1. 子弹击中目标 → 触发伤害结算2. 判断 penetrate_count > 0: - 是: 继续步骤3 - 否: 子弹销毁3. 穿透次数 -14. 计算新伤害: - penetrate_damage_decay_mode=1: 伤害 = 原伤害 × penetrate_damage_decay - penetrate_damage_decay_mode=0: 伤害 = 原伤害5. 子弹继续沿原有轨迹飞行6. 若 penetrate_count = 0 时击中目标 → 销毁

视觉表现:

穿透时产生穿身特效(如光束穿过敌人)

被穿透的目标显示穿透标记

每次穿透产生小粒子特效

建议穿透光束逐渐变细表示伤害衰减

注意事项:

穿透次数为0时子弹在击中后立即销毁

穿透时不触发分裂/弹射,仅计算伤害

穿透伤害衰减建议设置明显视觉反馈(光束变细)

穿透子弹在分裂/弹射后是否保留穿透由参数控制

2.4 折射机制 (Reflect)​

触发时机: 子弹击中障碍物(墙壁、战场边缘、不可通行区域)时

参数定义:

{ "reflect_count": 2, // 折射次数: 可折射的总次数 "reflect_range": 999, // 折射范围(实际无意义,保留兼容) "reflect_angle_offset": 0, // 折射角度偏移(0=标准镜像折射) "reflect_bullet_speed": 1.0, // 折射后速度倍率 "reflect_damage_decay": 1.0 // 折射伤害衰减}

核心逻辑流程:

1. 子弹碰撞检测 → 判断是否击中障碍物2. 判断 reflect_count > 0: - 是: 继续步骤3 - 否: 子弹销毁3. 折射次数 -14. 计算新方向(镜像折射): - 水平墙壁: Y轴速度取反 - 垂直墙壁: X轴速度取反 - 角落: 根据碰撞法线反射5. 应用角度偏移(如果有): - 新方向 = 镜像方向 + reflect_angle_offset6. 更新速度: 新速度 = 原速度 × reflect_bullet_speed7. 继续飞行

视觉表现:

折射时产生反光特效

折射点显示反射粒子

折射轨迹改变颜色或亮度

折射次数耗尽时,子弹在下次撞墙时直接销毁

注意事项:

只对障碍物有效,击中角色/敌人时不触发

折射次数耗尽后,下次撞墙直接销毁

折射不会改变子弹的分裂/弹射/穿透状态

建议给折射子弹一个特殊的光效标识(如蓝色光晕)

2.5 停留后返回机制 (Stay & Return)​

触发时机: 子弹飞行距离达到阈值时、击中目标时

参数定义:

{ "stay_type": "target"/"distance", // 停留类型:"target"=击中目标停,"distance"=飞行距离停 "stay_distance": 4.0, // 飞行距离: 停留前飞行的距离(格子单位) "stay_duration": 2.0, // 停留时间: 停留时长(秒) "return_speed": 2.0, // 返回速度: 返回时的速度倍率 "return_damage_mode": 0, // 返回伤害模式: 0=返回路径造成伤害, 1=不造成 "return_target": "caster" // 返回目标: "caster"=施法者, "origin"=原点}

核心逻辑流程:

阶段1: 飞行至停留点1. 子弹生成 → 记录起点坐标2. 持续飞行并计算累计飞行距离3. 判断飞行距离 >= stay_distance: - 是: 进入停留阶段 - 否: 继续飞行阶段2: 停留阶段4. 子弹在当前位置悬停 stay_duration 秒5. 期间保持静止,不进行伤害判定6. 显示停留特效(如充能动画、光圈扩散)阶段3: 返回阶段7. 停留时间结束 → 计算返回目标: - return_target="caster": 目标=施法者当前位置 - return_target="origin": 目标=起点位置8. 设置新方向 = 从当前位置指向返回目标9. 速度 = 原速度 × return_speed10. 返回模式判断: - return_damage_mode=0: 返回路径上击中敌人造成伤害 - return_damage_mode=1: 仅返回,不造成伤害11. 到达返回目标后,子弹销毁

视觉表现:

飞行阶段: 正常弹道光效

停留阶段: 子弹发光变亮,光圈扩散动画,倒计时显示

返回阶段: 改变轨迹颜色(如从蓝变红),速度视觉提升

建议停留时显示距离倒计时或停留进度条

注意事项:

停留期间不触发伤害判定,是技能的蓄力阶段

返回阶段可以设置是否造成伤害

返回速度可以快于飞行速度,增强打击感

停留期间可被打断(根据技能设计需求)

三、子弹触发优先级系统​

3.1 优先级规则​

优先级机制触发条件特殊说明
P1 (最高)分裂击中目标分裂后母子弹销毁,不再触发其他机制
P2弹射击中目标弹射后继续飞行,可能再次命中
P3穿透击中目标穿透后继续沿原轨迹飞行
P4折射击中障碍物只对障碍物有效,不与其他机制冲突
P5 (最低)停留返回飞行距离达到与命中不冲突,独立触发

3.2 复合机制处理流程图​

子弹生成 ↓【飞行阶段】 ├─ 检测到障碍物? ──是──→ [P4] 触发折射? │ └─ 是 → 折射 → 返回飞行 │ └─ 否 → 销毁 │ ├─ 检测到目标(敌人/英雄)? ──是──→ [P1] 可分裂? │ └─ 是 → 触发分裂 → 母子弹销毁 → 分裂子弹继续 │ └─ 否 → [P2] 可弹射? │ └─ 是 → 触发弹射 → 弹射次数-1 → 继续飞行 │ └─ 否 → [P3] 可穿透? │ └─ 是 → 穿透次数-1 → 继续飞行 │ └─ 否 → [P4] 可停留返回? │ └─ 是 → 击中目标停留类型? │ └─ 是 → 停留N秒 → 返回 → 销毁 │ └─ 否 → 继续飞行→ 飞行距离达到阈值→ 停留N秒 → 返回 → 销毁 │ └─ 否 → 销毁 └─ 超时/超出边界 → 销毁

四、子弹弹道形式设计​

4.1 抛物线弹道 (Parabolic Trajectory)​

适用场景: 火焰射手、熔岩炮手等需要从空中攻击的技能

参数定义:

{ "trajectory_type": "parabolic", "parabolic_height": 2.0, // 抛物线高度系数 "parabolic_curve": 0.5, // 抛物线曲率系数 "gravity": 9.8, // 重力加速度 "arc_duration": 1.0 // 抛物线飞行时间(秒)}

核心逻辑:

1. 计算起点与终点的水平距离: horizontal_distance = |终点 - 起点|2. 根据距离计算抛物线高度: arc_height = horizontal_distance × parabolic_height3. 使用抛物线公式计算Z轴高度: - 假设起点为(0, 0, 0),终点为(dx, dy, 0) - 抛物线参数方程: t = 当前时间 / arc_duration (0 ≤ t ≤ 1) x(t) = 起点.x + dx × t y(t) = 起点.y + dy × t z(t) = arc_height × 4 × t × (1 - t) // 标准抛物线4. 更新子弹位置和朝向: - 位置 = (x(t), y(t), z(t)) - 朝向 = 当前位置指向下一帧位置的向量

视觉表现:

子弹从起点以抛物线轨迹飞向目标

中间有明显的高度变化(向上弧线再下落)

落地时产生冲击波特效

建议配合粒子特效显示轨迹

注意事项:

抛物线高度应与射击距离成比例

避免抛物线过高导致子弹飞出视野

落地瞬间需要精确判定碰撞

建议为抛物线子弹添加阴影,提升空间感

抛物线子弹会持续检测目标位置,追踪;但当检测时发现目标位置与原位置相差很大距离(参数N)时,该子弹以原位置为落点

4.2 闪电链弹道 (Lightning Chain)​

适用场景: 雷电射手、雷电类技能的弹射机制

参数定义:

{ "trajectory_type": "lightning_chain", "link_duration": 0.3, // 链接持续时间(秒) "chain_width": 0.2, // 闪电链宽度 "lightning_segments": 5, // 闪电分段数量 "jitter_intensity": 0.5, // 闪电抖动强度 "fade_out_duration": 0.2, // 淡出时间 "color": {"r": 0.5, "g": 0.8, "b": 1.0, "a": 1.0} // 闪电颜色}

核心逻辑:

1. 子弹生成 → 目标锁定2. 瞬间创建闪电链接: - 起点 = 子弹发射位置 - 终点 = 目标位置 - 在起点和终点之间生成折线路径3. 链接阶段(link_duration秒): - 每帧更新闪电特效(抖动、闪烁) - 单次击中造成1次伤害,随后找下一个目标4. 淡出阶段(fade_out_duration秒): - 透明度从1.0渐变为0.0 - 闪电宽度逐渐收缩5. 链接结束后 → 触发弹射机制(如果有) - 寻找下一个目标 - 快速脱离起点,链接到新目标6. 重复步骤2-5,直到弹射次数耗尽

闪电特效实现:

1. 分段生成策略: - 将起点到终点的线段分为N段(N = lightning_segments) - 每段的端点在垂直方向添加随机偏移 - 偏移量 = random(-1, 1) × jitter_intensity2. 闪烁效果: - 每帧调整闪电的透明度: alpha = base_alpha × random(0.7, 1.0) - 可以添加光晕脉冲效果3. 粒子特效: - 沿闪电路径随机生成电弧粒子 - 粒子生命周期短(0.1-0.2秒) - 粒子颜色略亮于主体闪电4. 音效配合: - 闪电链接时播放"滋滋"声 - 每次弹射播放"啪"的音效

视觉表现:

蓝色/青色折线连接起点和目标

折线有明显的抖动和闪烁效果

命中点产生电弧扩散特效

弹射时闪电快速切换到下一个目标

淡出时闪电逐渐变细、变淡

注意事项:

闪电链不应受到物理碰撞影响

需要确保闪电特效与弹射同步

抖动强度不宜过大,避免视觉混乱

建议添加音效增强打击感

挂载脚本

如果是Line用第一个,否则用第二个

4.3 激光弹道 (Laser Beam)​

适用场景: 激光类持续伤害技能,如持续照射的激光炮

参数定义:

{ "trajectory_type": "laser", "laser_duration": 3.0, // 激光持续时间(秒) "laser_width": 0.15, // 激光宽度 "laser_color": {"r": 1.0, "g": 0.3, "b": 0.3, "a": 0.8}, // 激光颜色 "damage_interval": 0.2, // 伤害间隔(秒) "max_targets": 1, // 最大同时打击目标数 "switch_target_delay": 0.3, // 目标切换延迟(秒) "beam_segments": 20, // 激光分段数(用于弯曲效果) "glow_intensity": 1.5 // 光晕强度}

核心逻辑:

1. 子弹生成 → 锁定第一个目标2. 持续链接阶段(laser_duration秒): a. 每帧更新激光渲染: - 起点 = 子弹发射位置 - 终点 = 当前目标位置 - 创建连续的光束特效 b. 伤害判定(damage_interval间隔): - 如果目标存活 → 造成伤害 - 如果目标死亡 → 等待switch_target_delay秒,切换到下一个目标 c. 目标切换: - 在max_targets范围内寻找新目标 - 优先选择最近的敌人 - 激光快速切换到新目标3. 激光结束 → 子弹销毁

激光特效实现:

1. 基础光束: - 从起点到终点绘制半透明矩形/圆柱体 - 颜色 = laser_color - 宽度 = laser_width2. 光晕效果: - 在光束周围添加多层光晕 - 每层颜色更浅,宽度更大 - 透明度逐渐降低3. 核心高亮: - 在光束中心绘制更亮的核心线 - 宽度 = laser_width × 0.3 - 颜色更亮(alpha = 1.0)4. 动态效果: - 宽度轻微脉动: width = base_width × (1 + 0.1 × sin(time × 10)) - 透明度轻微闪烁 - 可以添加粒子从目标点飞向起点5. 击中点特效: - 在目标位置产生击中光圈 - 持续产生粒子(火花、烟雾) - 光圈大小随伤害间隔脉冲

目标切换逻辑:

1. 当前目标死亡时: - 等待 switch_target_delay 秒 - 在范围内搜索新目标2. 新目标选择: - 优先级1: 最近的敌人 - 优先级2: 血量最低的敌人 - 优先级3: 标记目标(如果有) - 排除: 已打击过的目标(可选)3. 切换动画: - 激光先收缩到起点(0.2秒) - 快速伸展到新目标(0.1秒) - 继续造成伤害

视觉表现:

持续的光束连接起点和目标

光束有明显的光晕和高亮核心

击中点持续产生火花和粒子

目标切换时激光快速切换

激光颜色和宽度可有轻微脉动

注意事项:

激光不应受物理碰撞影响

需要确保激光始终连接起点和目标

建议添加持续伤害的视觉反馈(如目标发光)

激光持续时间不宜过长,避免视觉疲劳

切换目标时需要平滑过渡

4.4 直线弹道 (Linear Trajectory)​

适用场景: 火焰射手基础技能、常规投射物技能

参数定义:

{ "trajectory_type": "linear", "speed": 8.0, // 飞行速度(单位/秒)}

核心逻辑:

1. 子弹生成: - 位置 = 发射点 - 方向 = 指向初始目标方向 - 速度 = speed2. 每帧更新: a. 碰撞检测: - 检测是否击中目标/障碍物 - 击中后触发相应机制(分裂/弹射/穿透)3. 销毁条件: - 击中目标且无剩余机制 - 超出战场边界 - 生存时间超时

视觉表现:

沿直线飞行(或追踪目标飞行)

建议添加尾迹粒子特效

击中时产生爆炸/闪光特效

注意事项:

直线弹道是最基础的弹道形式

可以与所有机制组合

建议为高速子弹添加运动模糊效果

4.5 追踪弹道​

参数定义:

{ "trajectory_type": "track", "speed": 8.0, // 飞行速度(单位/秒) "delay": 0.5, // 延迟追踪时间(单位/秒) "homing_strength": 0.5, // 追踪强度(0-1) "rotation_speed": 2.0 // 转向速度(度/帧)}

核心逻辑:

1. 子弹生成: - 位置 = 发射点 - 方向 = 指向初始目标方向 - 速度 = speed2. 每帧更新: a. 如果开启追踪(homing = true): - 计算当前方向到目标方向的角度差 - 根据homing_strength和rotation_speed调整方向 - max_rotation_per_frame = rotation_speed - actual_rotation = angle_diff × homing_strength - actual_rotation = clamp(actual_rotation, -max_rotation_per_frame, max_rotation_per_frame) - 新方向 = 原方向 + actual_rotation b. 更新位置: - 新位置 = 原位置 + 方向 × speed × delta_time c. 碰撞检测: - 检测是否击中目标/障碍物 - 击中后触发相应机制(分裂/弹射/穿透)3. 销毁条件: - 击中目标且无剩余机制 - 超出战场边界 - 生存时间超时

视觉表现:

追踪目标飞行

建议添加尾迹粒子特效

击中时产生爆炸/闪光特效

追踪模式时转向应平滑

注意事项:

可以与所有机制组合

追踪强度不宜过大,避免子弹"粘"在目标上

建议为高速子弹添加运动模糊效果

4.6 弹道形式对比​

弹道类型适用场景特点推荐机制
抛物线火焰射手、熔岩炮手有明显高度变化,视觉冲击强分裂、穿透
闪电链雷电射手、弹射技能瞬间链接,快速切换,视觉华丽弹射、无衰减
激光持续伤害技能持续链接,伤害稳定无、持续时间
直线基础投射物简单直接,易于理解所有机制
追踪简单直接,易于理解所有机制

五、子弹生命周期​

5.1 完整状态机​

[出生状态] ↓ (生成子弹)[飞行状态] ↓ (击中目标) ↓ (击中障碍物) ↓ (距离达标) ↓ (超时/越界)[命中判定] [折射判定] [停留判定] [销毁] ↓ ├─ 有分裂? → [分裂状态] → 分裂子弹进入[飞行状态] ├─ 有弹射? → [弹射状态] → 弹射数-1 → 回到[飞行状态] ├─ 有穿透? → [穿透状态] → 穿透数-1 → 回到[飞行状态] └─ 无机制 → [销毁]

5.2 子弹数据结构​

{ "bullet_id": "bullet_fireball_001", "owner_id": "hero_flame_shooter", // 运动参数 "position": {"x": 0, "y": 0, "z": 0}, "direction": {"x": 0.5, "y": 0.866, "z": 0}, "speed": 8.0, "lifetime": 5.0, "spawn_time": 1234567890, // 伤害参数 "base_damage": 100, "current_damage": 100, "damage_type": "fire", // 机制状态 "mechanics": { "split": { "enabled": true, "count": 2, "used": false, "range": 2.5, "damage_ratio": 0.5, "child_bullet_id": null }, "bounce": { "enabled": true, "count": 3, "used": 0, "range": 3.0, "damage_decay": 0.7, "decay_mode": 1, "tracking": true, "priority_target_type": 0 }, "penetrate": { "enabled": true, "count": 1, "used": 0, "damage_decay": 0.8, "decay_mode": 1 }, "reflect": { "enabled": false, "count": 0, "used": 0, "angle_offset": 0, "bullet_speed": 1.0, "damage_decay": 1.0 }, "stay_return": { "enabled": false, "state": "flying", // flying, staying, returning "stay_distance": 4.0, "traveled_distance": 0, "stay_duration": 2.0, "stay_start_time": 0, "return_speed": 2.0, "return_damage_mode": 0, "return_target": "caster", "origin_position": null, "caster_id": null } }, // 标记 "tags": ["fire", "burst"], "hit_targets": [], // 已击中的目标列表 "current_target": null, // 当前追踪的目标 "parent_bullet_id": null // 父子弹ID(用于追踪分裂来源)}

5.3 时间线示例​

T=0.0s: 子弹生成,位置(0,0,0),速度8.0T=0.5s: 飞行距离4.0格,击中敌人A - 伤害=100,命中敌人A - [P1] 分裂: 产生2个子弹B和C,各50伤害 - 母子弹销毁T=0.6s: 子弹B击中敌人D - 伤害=50,命中敌人D - [P2] 弹射: 弹射次数2→1,飞向敌人ET=0.7s: 子弹C击中敌人F - 伤害=50,命中敌人F - [P3] 穿透: 穿透次数1→0,继续飞行T=0.8s: 子弹B击中敌人E - 伤害=35(衰减),命中敌人E - [P2] 弹射: 弹射次数1→0,飞向敌人GT=0.9s: 子弹B击中敌人G - 伤害=24(衰减),命中敌人G - 弹射次数=0,销毁T=1.0s: 子弹C击中墙壁 - [P4] 折射: 折射次数3→2,反弹T=1.5s: 子弹C击中敌人H - 伤害=40,命中敌人H - 穿透次数=0,销毁总计: 5次命中,累计伤害=249

六、子弹复合机制处理规则​

6.1 机制叠加原则​

规则说明示例
优先级决定触发顺序击中时按P1→P2→P3顺序判断有分裂优先分裂,无分裂才判断弹射
触发后状态继承子弹继续飞行时,保留未触发的机制弹射后仍可穿透
分裂子弹独立分裂后的子弹是独立实体分裂子弹不受母子弹弹射次数限制
次数独立计数每个子弹独立统计机制次数弹射次数归零后,分裂子弹仍可弹射
伤害衰减独立每个子弹独立计算伤害衰减分裂子弹伤害衰减不影响其他子弹

6.2 典型组合配置建议​

组合A: 高频率分裂弹射 (火焰射手爆气)

{ "split_count": 3, "split_damage_ratio": 0.5, "bounce_count": 1, "bounce_damage_decay": 0.8, "bounce_tracking": true}// 效果: 1击分裂为3,每个再弹射1次 → 最多6次命中

组合B: 高穿透AOE (冰霜射手Roguelike)

{ "split_count": 2, "split_damage_ratio": 0.3, "penetrate_count": 2, "penetrate_damage_decay": 0.8, "penetrate_after_split": true}// 效果: 击中后分裂,每个穿透2次 → 适合直线敌人队列

组合C: 全场连锁闪电 (雷电射手Roguelike)

{ "bounce_count": 5, "bounce_range": 4.0, "bounce_damage_decay": 0.0, // 无衰减 "bounce_tracking": true, "bounce_priority_target_type": 1 // 优先标记目标}// 效果: 5次弹射无衰减,优先击杀标记目标

组合D: 返回型飞镖 (特殊英雄技能)

{ "split_count": 0, "bounce_count": 0, "penetrate_count": 2, "penetrate_damage_decay": 1.0, "stay_return": { "enabled": true, "stay_distance": 5.0, "stay_duration": 1.5, "return_speed": 2.0, "return_damage_mode": 0, "return_target": "caster" }}// 效果: 飞出5格停留1.5秒,返回时穿透造成伤害

6.3 核心需求说明​

6.3.1 机制特性需求​

分裂机制的作用范围

需求: 分裂只针对母子弹触发

规则: 分裂数量只需判断一次(不论分裂数量最终叠加了多少次)

弹射与穿透的优先级

需求: 弹射与穿透可以共存

规则: 弹射优先级高于穿透。弹射完毕后,子弹会沿着最后一次弹射的飞行轨迹继续进行穿透判断

折射与机制次数的关系

需求: 折射不占用其他机制的次数

规则: 折射不属于与角色单位碰撞后的触发机制,因此不会占用弹射、分裂、穿透的次数

停留返回机制的打断条件

需求: 明确停留返回的打断条件

规则: 停留返回只会被子弹存活时长打断。其他子弹机制(弹射、分裂、穿透等)同理

配置要求: 在配置时,会给子弹赋予较长的存活时间

性能优化需求

需求: 支持大量子弹场景

实现: 由程序员团队负责性能优化实现

弹射目标选择规则

需求: 明确弹射目标的选择逻辑

规则: 弹射优先选择未被击中的目标

6.3.2 特殊情况处理需求​

情况1: 分裂与弹射的执行顺序

场景: 母子弹分裂后是否进行弹射

需求: 当存在分裂机制时,母子弹不会进行弹射(分裂后母子弹销毁)。分裂子弹才会进行弹射次数判断

说明: 有分裂机制存在时,母子弹分裂后才会进行弹射,分裂子弹独立进行弹射次数判断

情况2: 穿透后是否还可以弹射

场景: 弹射与穿透的复合机制

需求: 弹射优先级高于穿透,第一次命中触发弹射而非穿透

说明: 弹射完毕后,子弹会沿着最后一次弹射的飞行轨迹进行穿透判断

情况3: 折射与弹射/穿透的关系

场景: 折射机制与其他机制的组合

需求: 折射不属于与角色单位碰撞后的触发机制,所以不会占用弹射、分裂、穿透的次数

说明: 折射只对障碍物有效,与弹射/穿透互不冲突

情况4: 停留返回期间的碰撞判定

场景: 停留返回机制与其他机制的交互

需求: 停留返回只会被子弹存活时长打断,其他子弹机制同理

说明: 因此在配置时,会给子弹赋予较长的存活时间

七、子弹性能优化策略​

7.1 弹道池管理​

优化项说明预期效果
对象池子弹对象复用,避免频繁GC减少内存分配
预加载提前创建常用子弹模板减少初始化时间
分级池按机制复杂度分级池化高效利用资源
自动扩容动态调整池大小适应不同负载

7.2 数量限制​

场景子弹上限说明
同屏子弹总数100防止卡顿
单技能子弹数20防止单一技能过于强力
分裂子弹层数3禁止无限分裂
弹射链条长度10防止弹射循环

7.3 计算优化​

优化项说明预期效果
空间划分网格/四叉树加速碰撞检测减少检测次数
目标缓存缓存附近目标列表减少寻路计算
延迟更新非实时更新的状态延迟处理降低帧率影响
LOD远距离子弹简化特效降低渲染负载
批处理同类型子弹统一处理提升CPU效率

7.4 视觉优化​

优化项说明预期效果
粒子复用粒子系统对象池减少渲染开销
特效LOD远距离简化特效降低GPU负载
合并绘制同类型子弹合并绘制减少DrawCall
遮挡剔除不可见子弹不渲染节省GPU资源
延迟特效非关键特效延迟渲染平滑帧率

十三、buff类型​

爆气:区分爆气buff类型

点燃:buff持续期间,间隔触发施法者攻击力百分比火焰伤害

击退:直线向后击退N

眩晕:无法行动,包括移动和攻击

禁足:无法移动,但能攻击

属性增减

加速:移动速度+N%

减速:移动速度-N%

攻击力增加:攻击力+N%

攻击力减少:攻击力-N%

技能冷却增加:技能冷却+N%

技能冷却减少:技能冷却-N%

最大血量增加:最大血量+N%,需要处理buff结束后,对象血量恢复

最大血量减少:最大血量-N%,需要处理buff结束后,对象血量恢复

施加火系/冰系/电系伤害增加:火系/冰系/电系伤害+N% 各分3个枚举

施加火系/冰系/电系伤害减少:火系/冰系/电系伤害-N% 各分3个枚举

受到火系/冰系/电系伤害增加:火系/冰系/电系伤害+N% 各分3个枚举

受到火系/冰系/电系伤害减少:火系/冰系/电系伤害-N% 各分3个枚举

十四、目标排序​

攻击力最高:范围内,攻击力最高的目标

攻击力最低:范围内,攻击力最低的目标

血量最高:范围内,最大血量最高的目标

血量最低:范围内,最大血量最低的目标

十五、新增技能机制​

新增召唤事件

召唤物出现范围:施法者朝向的半圆内随机取点,配置半径

召唤物AI暂时只处理与怪物AI一样,刷出后走直线根据技能范围停下攻击目标

召唤物生成后根据怪物一样,影响胜利结算,母体死亡不影响召唤物

召唤物新增npc表,配置预制体,属性继承比例(照搬领主的配置,下图已删除多余字段)

事件参数

NpcID

召唤数量

召唤物特效:每个召唤物位置触发

召唤间隔:配置0,表示同时生成

召唤范围半径

召唤范围的中心点选择:施法者位置、目标位置

vThir0​

IDModelDurationAtkPercentageHpPercentageDefPercentageMoveSpeedSkillCarryingBuffID
intstringintintintintint(list#sep=|),int(list#sep=|),int
idNpc预制体名称持续时间,毫秒,-1表示无限攻击力继承百分比,除10000血量继承百分比,除10000防御值继承百分比,除10000移动速度(除10000)技能数组自带buffID数组
410_Npc013000100010001000030410
411_Npc016000180018001800030411
412_Npc019000320032003200030412
413_Npc0112000540054005400030413
414_Npc01_215000930093009300030414
510_Npc02-110000100001000080000
710_Npc71036001000010000100000715
711_Npc71136001000010000100000716
712_Npc71136001000010000100000717
713_Npc71136001000010000100000718
22031_Npc22031-15005005001600020050

设计中的具体未决点​

机制库“最大血量最高”排序与D3/红品指定“当前血量最高”并不等同:每个技能必须使用其明确口径。停留可打断的早期建议被同源§6.3限定为仅存活时长打断。分裂层数3与不递归冲突以上文具体英雄规则约束。召唤物是否参与胜负、死亡清理与来源归属须按玩法/技能指定;元素卡派生物不占英雄位、无阻挡、不得伪装成英雄伤害。

来源​

飞书Mp3ydiJWQoTlmmx2tcUc8jRpndg的机制库、M5FZdu9G0oSEvOxHkFjcv8QhnRe英雄技能;当前红品及D3规则。本页没有新增测试用例。