战斗血液效果
适用于 Heimei-EG-lua ver-32。普通受击从 4 套短血花中随机选择,击杀使用同样短促的小血花;地面血迹从 10 张暗红透明图片中随机抽取,避免紧邻重复。运行时只使用 DM3 原生动画/精灵节点,不依赖 Unity,不改变伤害、掉落、战斗随机数和存档。
启用与配置
引擎默认不创建血液管理器。先注册下述资源,再在 App.lua 的启动事件调用:
引擎.系统设置({血液效果={开启=true,画质="高",血迹时间=8000,受击间隔=120}})
-- 关闭并立即释放本功能持有的节点:
引擎.系统设置({血液效果=false})
-- 按上一次有效参数重新开启;首次使用默认高档:
引擎.系统设置({血液效果=true})
本次已为开发端 G:/DM3-longZhiCQ/mir3meiying2/game/App.lua 添加资源表及高档启动配置。没有新增设置窗口控件;本功能的画质与天气画质独立。
| 字段 | 类型、范围 | 初次默认值 | |
| 开启 | 逻辑值;配置表中省略即开启 | true | |
| 画质 | 文本:低、中、高、极高 | 高 | |
| 血迹时间 | 数值,1000~30000 毫秒,向下取整 | 8000 | |
| 受击间隔 | 数值,60~1000 毫秒,向下取整 | 120 |
画质、血迹时间、受击间隔省略时沿用上一次有效值。非法配置返回 false, 错误文本,不切换现有血液配置;有效重新设置会清除旧效果再应用新配置。不能每帧重复调用系统设置。若混合修改其他系统设置,返回值也受原有设置逻辑影响,建议单独配置血液效果。
只读状态:引擎.系统信息.血液效果 为当前画质或 "关闭",未配置时可能为 nil;引擎.系统信息.血液效果错误 为运行异常文本,正常为 nil。视觉更新/生成异常会停用血液效果并尝试清理节点,不追加逐帧日志,不中断原伤害结算。重新提交有效开启配置清除旧错误;单独关闭保留旧错误供排查。
数量与性能边界
| 画质 | 每种普通动画池 | 击杀动画池 | 血迹池 | 每次命中播放数 | |
| 低 | 2 | 1 | 16 | 1 | |
| 中 | 3 | 2 | 24 | 1 | |
| 高 | 4 | 3 | 40 | 1 | |
| 极高 | 8 | 4 | 80 | 2 |
普通动画共有 4 种,因此“每种普通动画池”需要乘 4 才是普通动画节点总预算。每次普通命中在开始播放时选择一次版本,整段播放不再换图;极高画质每次同时播放两段,各自独立选择版本,保持相对高档翻倍。击杀使用独立资源标识,但图像复用第一组短血花,不再播放大型爆发。全局每引擎帧最多新建 8 个血液节点,已分配节点循环复用;池满覆盖旧效果,不无限累加。致死命中优先尝试一处主要地面血迹;每次成功放置血迹时重新抽取图片,复用节点也换图,首次十选一,此后从排除上一张的九张中等概率选择;普通命中以 35% 的独立视觉随机概率留下小血迹,预算耗尽时可能跳过。
只遍历有界视觉池;不扫描全图角色、不导出存档、不触发属性重算。采用独立随机序列,不消耗战斗用 math.random。坐标和透明度按原生要求传整数。
触发条件与方向
在引擎原受伤链实际扣血之后触发。躲避、治疗、非正数伤害及原逻辑提前拦截的攻击不触发。需有同图且非自身的伤害来源;状态类组件不触发;没有伤害来源的持续伤害不触发。仅敌对阵营 camp=-1,排除主角、宠物/召唤物所有者标记、创建中和隐藏角色。
只对当前可视且未暂停的地图、屏幕周边 96 像素范围内的目标生成。普通受击按目标限频,致死命中不受该间隔限制。掉血后 hp≤0 作为致死命中,不额外挂接死亡回调;脚本直接删除角色/直接设置死亡不自动喷血。
方向仍由“伤害来源当时位置 → 受伤目标位置”计算。为保留离线烘焙动画中的重力方向,不把整套画面任意旋转:攻击者在目标左侧时水平镜像基础动画,使主要喷溅朝右;攻击者在目标右侧时保持朝左;屏幕横坐标近似相同时独立随机左右。上下方向不制作八方向序列。远程攻击者移动后,方向可能与实际飞行中的弹道不同;不承诺墙面碰撞或溅到装备上的效果。
需要排除机关、石像等角色时,可设置已有附加表:
角色对象.附加.喷血 = false
这不是新增角色方法,恢复可删除该字段。过滤条件不会改动角色伤害或死亡事件。
层级、淡出与清理
受击/击杀动画使用地图上层原生动画节点,地面血迹使用地图下层精灵节点。不是逐角色深度排序:喷溅不保证被每个角色或墙体正确遮挡,复杂屋顶/天气叠层效果需项目实机确认。血迹已压扁成地面透视,不整体随机旋转。
普通受击和击杀均为 4 帧、40 毫秒/帧,160 毫秒后隐藏复用;血迹在配置寿命的后 35% 渐隐。时间取原生运行时间差,单帧最多推进 100 毫秒;地图暂停/隐藏时冻结,不受地图逻辑加速影响,长时间卡顿时不会一次跳完全部效果。
切换当前地图、地图清空/重置或关闭/重新配置时释放本功能节点。已淡出的节点隐藏并留在有界池中复用;切图不保存旧血迹,不写存档。节点释放不等于强制清除引擎共享纹理缓存。
资源与 PNGZ 发布
ver-32 资源位于 Res/HeimeiBlood32/:10 张 78 像素宽地面图(ver-32 血迹资源 x1.5 修订)、4 组命中动画及1组击杀动画。每组动画为4张64×64透明帧,图集256×64;实际血花约28像素,暴击仍为1.08倍。固定动作锚点 px=32, py=44,血花中心在角色地图落点上方约12像素,不自动识别目标身高,不承诺所有体型都精确命中躯干。
死亡地面图缩放0.85~1.15,宽约66~90像素;普通命中小血迹缩放0.24~0.44,宽约19~34像素。保持角度0,避免压扁后的贴地图随意旋转。所有血迹仍乘原来的210透明度,寿命后35%渐隐。
资源注册共15项:
-- i=1..10,每张图使用独立稳定标识:
{标识="HeimeiBlood32_stain1",文件="HeimeiBlood32/stain1.png"},
-- i=1..4:
{标识="HeimeiBlood32_hit1",文件="HeimeiBlood32/hit1/hit1.json",分类="动画"},
{标识="HeimeiBlood32_kill",文件="HeimeiBlood32/kill/kill.json",分类="动画"},
本轮开发端 App.lua 已补齐全部15项并启用高档、血迹8000ms、受击间隔120ms。旧资源注册保留用于回滚。新库和新资源必须一起安装;单换库会缺少资源。
本轮提供开发端PNG+明文JSON,未执行新素材的PNGZ转换与正式服发布。以后正式发布若转换为PNGZ,须同步改JSON的 res 扩展名,并保留明文JSON,不能只保留JSONZ。原有ver-30的PNGZ验证结论不扩展到本批新素材。
验证范围
- ver-32以最新不可变ver-31为底座,保留地图环境色修复。1755 Proto不变;精确指令差异[1665,1669,1671,1672]、常量差异另含横幅1754、捕获差异[1671]。
- 原源码重编译等价、父链及血液闭包逐层捕获检查、严格解析、标准语法、双向转换、反向逐字节还原通过。
- 本次7940项快速定点隔离断言:10图覆盖、禁止紧邻重复、节点复用换图、池上限、160ms边界、死亡血迹保留与清理;46节点创建/释放配平。同名内部全局置nil,从原入口上值注入局部对象执行成品字节码。
- 20张动画帧与图集逐字节回读一致;10张地面图存在,前端注册/JSON引用及语法检查通过。
- 未运行全项目回归、新的真实引擎离线测试或完整玩家实测。真实画面落点、夜间可见度、遮挡及战斗观感仍待用户复测。
历史ver-29/ver-30验证与PNGZ记录分别见对应 analysis_output/Heimei-EG-lua_ver-29-blood/、Heimei-EG-lua_ver-30-blood-animation/;本轮证据位于 Heimei-EG-lua_ver-32-blood-brief/。
更新记录
| 日期 | 适用版本 | 变化 | |
| 2026-09-16 | ver-29 | 新增敌方受击/击杀血液视觉、四档有界池、地图生命周期清理、稳定资源标识和系统设置;区分隔离、原生离线及待实机验证范围。 | |
| 2026-09-17 | ver-30 | 普通受击改为 4 套随机 DM3 动画、击杀独立动画;640 安全画布预缩放后逐帧紧裁并以 ox/oy 固定锚点,按攻击者左右镜像;极高双播;明确 PNGZ 图集必须搭配明文 JSON。 | |
| 2026-09-19 | ver-32 | 命中/击杀改为160ms短血花;10种地面血迹每次放置随机抽取并排除紧邻重复;复用换图,固定小血花锚点;新增资源,记录本轮仅定点隔离验证。 | |
| 2026-09-19 | ver-32 血迹资源 x1.5 | 十张地面图由原始高分辨率图重新导出,宽52→78像素,高按1.5倍取整;保留暗红调色、透明通道和贴地透视。只更新图片,不回封、不改变命中动画或随机逻辑;旧ver-32整体效果获用户肯定,本次大小待重启复测。 |
