《迷途之梦》战斗系统分析 · v0.1(基于源码逐帧核对)
读的是 lost-dream/ 里的 GDScript,不是凭手感猜。所有时间都是游戏时间(120 物理帧/秒,1 帧 ≈ 8.33ms), 顿帧/慢动作会额外拉长真实时间,我会单独标出来。
0. 六条结论先说
1. 玩家的核心资源是无敌帧,不是血。翻滚 0.34s 里有 0.21s 无敌、冷却只有 0.1s、不消耗任何东西 → 理论上 48% 的时间可以无敌,而且「完美闪避」还给 2.5s 的高额奖励窗口。所有敌人、包括 Boss,都能用「滚过去」解决。 2. 平A 的真实定位是 DPS,重击的定位是控制。三段轻击取消后摇后约 6.1 伤害/秒(全游戏最高),重击只有 2.9/秒,但重击带 1 秒眩晕且能打断 Boss 招式。 3. 重击锁是当前最强的一张「对策卡」:眩晕 1.0s 和重击循环 1.03s 几乎相等,看起来差一点,但每次命中还会额外造成 0.22s 硬直(_hurt_stun),两者一叠,小怪永远醒不过来;范围 245 宽还能一次锁一片。 4. Boss 的横扫是「一次性判定」:只在 t=0.55s 那一帧检查一次距离,之后没有任何判定。这意味着它比看起来好躲得多——站远一点(>380px)或者滚过去都行,甚至可以在 0.55s 之后再走进去。 5. 没有真正的石头剪刀布。三个小怪 + Boss 全部被「翻滚 + 平A」通吃;跳跃还能额外免疫所有地面攻击(影卒 62px、奔角 56px、Boss 冲刺 120px 的纵向判定都比跳跃高度 173px 小)。难度来自玩家自己的输入精度,而不是解法选择。 6. 两个大招是被低估的主要输出。破梦 5 伤 / 斩惑 6 伤、10 秒冷却,一场 60 秒的 Boss 战能放 6 次(30–36 伤,超过 Boss 总血量 26);而且破梦全程无敌(1.15s 覆盖 1.04s 动作),等于「免费的输出窗口」。前提是你会稳定触发完美闪避——而这件事在现版本里非常容易。
1. 玩家能力全表
| 能力 | 数值 | 备注 |
|---|---|---|
| 血量 | 5 | 死亡无惩罚,满血重来 |
| 移速 / 加速度 | 430 / 3600 | 空中 2000 |
| 跳跃 | 初速 930,重力 2500 → 最高约 173px,滞空 0.74s | 短按(<0.42 倍速截断)只有约 30px 高 |
| 二段跳 | 初速 837 | 空中一次 |
| 空中冲刺 | 1150 速,0.15s,无敌 0.18s | 冷却 0.31s |
| 翻滚 | 660 速,0.34s,无敌 0.05–0.26s(0.21s),冷却 0.1s | 后摇 0.34s,可连滚 |
| 受击无敌 | 0.75s | 被打后 |
| 破梦无敌 | 1.15s | 全程无敌 |
| 斩惑无敌 | 0.5s | 只保护起手和横扫,硬后摇暴露 |
| 输入缓冲 | 攻击 0.16s / 跳 0.12s / 重击 0.16s / 翻滚 0.14s | 缓冲偏短,翻滚中按 J 容易被吃掉 |
| 土狼时间 | 0.10s | |
| 场地边界 | 90–1830 | 本轮修复后 |
关键点:翻滚是无消耗的。 没有体力条、没有次数限制,唯一限制是 0.1s 冷却——所以「一直滚」在数学上是可行的,只是会牺牲输出。
2. 平A / 重击 / 大招的帧数据与 DPS
2.1 三段轻击(player.gd:37-41)
| 段 | 前摇 | 判定 | 后摇 | 伤害 | 击退 | 判定框(宽×高) | 实际够到 | 顿帧 |
|---|---|---|---|---|---|---|---|---|
| 1 | 85ms | 85ms | 155ms | 1 | 250 | 118×108 | 前方 124px | 45ms |
| 2 | 75ms | 85ms | 165ms | 1 | 270 | 124×110 | 前方 130px | 50ms |
| 3 | 115ms | 115ms | 260ms | 2 | 430 | 140×124 | 前方 146px | 85ms |
- 后摇在 32% 处可取消(接下一段或翻滚),第 3 段后不能接第 4 段。
- 取消后摇 → 三段打完约 0.66s,合计 4 伤害,约 6.1 伤害/秒(游戏时间);算上 180ms 顿帧,真实时间约 0.84s → 4.8/秒。
- 可以同时打中多个敌人(矩形查询,最多 16 个碰撞体)。
2.2 重击(player.gd:44)
| 前摇 | 判定 | 后摇 | 伤害 | 击退 | 框 | 够到 | 眩晕 | 顿帧 |
|---|---|---|---|---|---|---|---|---|
| 300ms | 140ms | 300ms | 3 | 400 | 245×165 | 前方 251px | 1.0s(Boss 0.35s) | 200ms |
- 后摇 50% 处可以接下一次重击(
player.gd:428)→ 循环 1.03s/次,约 2.9 伤害/秒,但每一下都刷新 1 秒眩晕。 - 眩晕期间敌人
_hurt_stun也生效(每次命中额外 0.22s),所以 1.03s 的循环足以让小怪永久硬直。 - README 写的「235px 突进」在代码里其实只有约 6–8px 位移(
velocity.x = 235*(1-t)/…*0.35,持续 0.14s)。
2.3 破梦 / 斩惑(player.gd:42,47-49)
这两个是「完美闪避」的奖励招:只有完美闪避后的 2.5 秒窗口内才能按出来,共用 10 秒冷却。 区别是——破梦开局就能用(J),斩惑要捡到记忆碎片解锁重击之后才能用(K)。
| 招式 | 前摇 | 判定 | 后摇 | 伤害 | 击退 | 判定框 | 实际范围 | 无敌 | 顿帧 | 冷却 |
|---|---|---|---|---|---|---|---|---|---|---|
| 破梦 J | 340ms | 200ms | 500ms | 5 | 780 | 360×260,中心在身前 186 | 身前 6~366px,纵向 -208~+52 | 1.15s | 400ms | 10s |
| 斩惑 K | 160ms | 300ms | 300ms(不可取消) | 6 | 520 | 400×96,ox=0 绕身 | 前后各约 200px(-194~+206),纵向 -78~+18 | 0.5s | 220ms | 10s |
真实动作时长 vs 无敌覆盖
| 动作总长 | 无敌 | 结果 | |
|---|---|---|---|
| 破梦 | 0.34+0.20+0.50 = 1.04s | 1.15s | 全程无敌,还多出 0.11s 的安全余量——可以当「无敌反打」用 |
| 斩惑 | 0.16+0.30+0.30 = 0.76s | 0.5s | 最后 0.26s 的后摇完全暴露,且不能翻滚取消——这是它和破梦真正的取舍 |
伤害占比(真实数据)
- 对小怪:破梦 5 伤、斩惑 6 伤,都能一击秒杀全部杂兵(影卒 3 / 浮瞳 2 / 奔角 4),而且都是范围伤害(360 宽 / 前后 400 宽),一次能清一片。
- 对 Boss(26 血):破梦 19.2%、斩惑 23.1%。
- 10 秒冷却意味着一场 60 秒的 Boss 战可以放 6 次大招 ≈ 30–36 伤害——比 Boss 总血量还多。也就是说,只要会稳定触发完美闪避,大招本身就是主要的 Boss 输出手段,平A 反而是补伤害。
触发条件(决定了它们的实战价值)
_break_window = 2.5 只在 Player._perfect_dodge() 里设置,而完美闪避的判定是「翻滚中(0.02–0.26s)被任何伤害判定命中」。 换句话说:这两个招不是解锁就能按,而是必须先「迎着攻击滚」成功一次。窗口内 HUD 会显示「破 梦 J 斩 惑 K」。
各敌人的触发难度:
| 敌人 | 触发方式 | 难度 |
|---|---|---|
| 影卒 | 0.42s 举刀时滚过去 | 低(前摇很长) |
| 奔角 | 0.7s 蓄力红线时滚过去,或跳过冲锋再等它撞墙 | 低 |
| 浮瞳 | 滚弹幕(460 速、330 距离,有 0.7s 飞行时间) | 中低 |
| 假面·横扫 | 0.55s 举刀时滚进 236px 圈里 | 中(单帧判定,要卡 0.55s) |
| 假面·冲刺 | 980 速冲过来时滚穿 | 中(最稳定的触发源) |
应用场景
| 场景 | 用哪个 | 原因 |
|---|---|---|
| Boss 连段里想硬吃一套 | 破梦 | 1.15s 无敌覆盖整个动作,还能反打 5 伤 |
| 被 3–4 个地面小怪围住 | 斩惑 | 前后 200px 都打,6 伤直接清场 |
| 浮瞳悬在头顶 / Boss 跳起来 | 破梦 | 斩惑纵向只到 -78,打不到空中的 |
| 打奔角(4 血) | 两个都行 | 5 / 6 伤都是一击 |
| 触发完美闪避后想最快出伤 | 斩惑 | 0.76s 打完 6 伤 ≈ 7.9 伤/秒,约是破梦的 1.6 倍 |
| 触发后自己血少、周围还有威胁 | 破梦 | 用无敌把危险期盖过去 |
| 想打断 Boss 起手 | 破梦 | 命中 5 伤 + 超长顿帧,Boss 的招式基本必断 |
风险点
- 斩惑的 0.26s 暴露后摇:对 Boss 用斩惑,如果它紧接着出冲刺(0.32s 蓄力),你正好在后摇里,会被 980 速撞个正着。对 Boss 用斩惑要么确认它刚放完招,要么等它二阶段收招的 0.9s 白给窗口。
- 斩惑打不到空中:浮瞳全场悬浮在 y≈656(离地约 120px),斩惑纵向只到 -78,完全免疫;Boss 跃击在空中时也打不到。
- 破梦前摇 0.34s:如果是「完美闪避后按晚了」,0.34s 前摇 + 0.2s 判定,命中点可能已经过了 2.5s 窗口的一半;但窗口只限制「按出来」的时机,按出来之后就一定能打完。
- 共用冷却:破梦和斩惑共享 10s,选错就只能等;对空场景误按斩惑 = 白交 10 秒。
- 顿帧很重:破梦命中 400ms 顿帧 + 1.6s 慢动作,真实时间会被拉长不少;连段中放大招会明显「卡一下」。
2.4 空中攻击(不需要解锁)
- 空中按 J → 落地时砸出 半径 130、2 伤害、击退 420 的冲击波(
player.gd:547)。 - 落地冲击波只打地面一圈,但浮瞳悬浮在 y≈656,冲击波圆心在 y≈734 → 也能打到。
- 这是前期(还没捡碎片)最好用的清群手段。
2.5 DPS / TTK 总表
| 输出方式 | 伤害/秒(游戏时间) | 备注 |
|---|---|---|
| 三段轻击(取消后摇) | ≈6.1 | 最高,但要求贴脸 |
| 重击循环 | ≈2.9 | 附带永久眩晕 |
| 破梦 | 5/10s ≈0.5(平均) | 爆发 + 无敌 |
| 斩惑 | 6/10s ≈0.6(平均) | 爆发,不可取消 |
| 空中砸地 | 2 / 每次跳 ≈2 | 范围 130 |
Boss 26 血:纯贴脸轻击约 4.3 秒游戏时间(算上顿帧约 5.5 秒真实时间);实战要躲招、要追,正常在 30–60 秒之间。小怪 2–4 血 → 一套轻击或一个破梦直接清。
3. 伤害与生存逻辑
- 玩家只有 5 血,没有任何可用的回血手段(
GameState.heal_player()有定义但全项目没有调用),死亡 = 满血 + 重打当前波/Boss,零惩罚(只加一个「第 N 次」)。 - 所以「贪刀换血」在数学上是划算的:多打一套的收益 > 掉 1 血的代价(反正死了满血重来)。
- 受击后 0.75s 无敌 + 击退,防止被连死。
- 敌人接触伤害只在特定状态生效(
_contact_hit_active()):影卒只在前刺、奔角只在冲锋、木桩只在挥刀;浮瞳没有接触伤害(只有弹幕)。 - 玩家受伤走
Player.hurt():先判完美闪避,再判无敌帧,最后才扣血——所以「在翻滚窗口里被判定命中」永远是赚的。
4. 小怪数据与对策表
| 敌人 | HP | 行为节奏 | 判定 | 破解方式 | 有没有「专属解法」 |
|---|---|---|---|---|---|
| 影卒 | 3 | 接近 → 举刀 0.42s → 突刺 0.16s(470 速)→ 收招 0.55s | 突刺时水平 48px、纵向 62px | 翻滚穿过 / 举刀时后退 / 跳跃(纵向 62 < 跳高 173) | 无,通用 |
| 浮瞳 | 2 | 保持 330px,蓄力 0.5s → 单发弹 460 速 | 弹丸半径 10,命中 32px | 翻滚(弹速慢)、贴脸砍、空中砸 | 无,通用 |
| 奔角 | 4 | 520px 内蓄力 0.7s(红线)→ 900 速冲锋 → 撞墙/1s 后硬直 | 冲锋时 58px、纵向仅 56px | 跳过去(跳高 173,冲锋完全打不到空中);撞墙后白给 | 跳跃是最优解,但不是唯一 |
| 木桩 | ∞ | 站桩,0.9s 举刀 → 0.26s 挥 | 69px,0 伤害 | 故意站进去练完美闪避 | 教学专用 |
共同弱点:全部是「接近 → 长前摇 → 单次判定」,没有多段、没有持续判定、没有反翻滚手段。一套「滚穿 → 转身轻击三段」通吃。
5. Boss「假面」招式表与应对
| 招式 | 时间轴 | 判定 | 安全解法 | 危险度 |
|---|---|---|---|---|
| 横扫 | 举刀 0.55s → 单帧判定 → 收 0.6s | 以身前 143px、高 -112 为圆心,半径 236px(scale 1.55) | 站到 380px 外;或滚过去;或站在它背后(背后 -85px 以内才危险) | 中 |
| 跃击地震 | 0.35s 蓄 → 0.75s 起跳 → 落地生成左右两个地面冲击波(520 速,半径 15) | 只有冲击波有伤害,本体落地无判定 | 跳过冲击波 / 翻滚 / 站远 | 低 |
| 突进 | 蓄 0.32s → 980 速冲 0.42s,2 连(二阶段 3 连) | 水平 120px、纵向 120px | 翻滚;跳跃只有到最高点(173px)才免疫 | 高 |
| 扇形弹幕(二阶段) | 0.55s 蓄 → 5 发 ±0.4rad、430 速 | 每发 32px | 翻滚 / 横向跑 | 中 |
Boss 的决策逻辑(mask_boss.gd:127):
- 横扫永远在选项里;
- 距离 >220 时「突进」被加入两次(权重翻倍)→ 站远会勾引冲刺;
- 距离 <520 时「跃击」加入;
- 二阶段额外加入「弹幕」和一次「横扫」。
- 半血强制进入二阶段:会强制
_end_attack(0.9),这是一个稳定的白给窗口。
重击可以打断 Boss:MaskBoss.stun() 把眩晕压到 0.35s,但会清空当前招式、把状态打回 walk、_decide_cd=0.35。也就是说 每一次重击命中 = 取消 Boss 一个正在起手的招,这是打 Boss 最实用的控制。
一个容易被忽略的点:攻略里写「翻滚穿过他的刀锋,从背面打」——代码里没有任何背击加成。但横扫的判定圆心在身前 143px,所以站在背后确实是安全的,这句提示在「站位」意义上是对的,在「伤害」意义上是错的。
6. 战斗逻辑深挖
6.1 玩家状态机
IDLE / RUN / JUMP / FALL / ROLL / ATTACK / HURT / DEAD。
- 攻击有 3 个阶段:0 前摇 → 1 判定(此时才
_strike)→ 2 后摇。 - 阶段 2 的取消只在 32%(重击 50%)之后开放;斩惑(
_combo_idx==5)禁止一切取消。 - 攻击中不响应跳跃(跳跃只在
_do_move里处理)→ 没有跳取消,只能滚取消或接段。
6.2 命中判定
- 每次判定用
intersect_shape矩形查询(碰撞层 4 = 敌人),最多 16 个结果。 _hit_ids保证一次挥砍对同一个敌人只结算一次(多段判定不会重复打)。- 击中后:
Feel.hitstop(顿帧)+Feel.shake+hit_landed(只用于 HUD 连击数)。 - 伤害就是整数减法,没有暴击、属性、破防、背击、连段加成。
6.3 无敌帧来源(全部会叠加取最大值)
| 来源 | 时长 |
|---|---|
| 翻滚 | 0.05–0.26s |
| 空中冲刺 | 0.18s |
| 受击后 | 0.75s |
| 破梦 | 1.15s |
| 斩惑 | 0.5s |
| 复活 | 1.0s |
hurt() 的判定顺序:完美闪避 → 无敌帧 → 扣血。完美闪避的判定窗口是 state==ROLL 且 _roll_t ∈ [0.02, 0.26]——比无敌帧窗口还早 0.03s,也就是「刚滚出去就挨打」也算完美闪避。
6.4 时间操纵
- 顿帧:
Engine.time_scale = 0.02,用真实时间计时(Time.get_ticks_msec()),结束后强制回 1.0。 - 慢动作:完美闪避 0.32 倍 0.42s;破梦命中额外 0.22 倍 1.6s;Boss 死亡 0.25 倍 1.6s。
- 坑:
hitstop结束时无条件time_scale = 1.0,如果此时正在慢动作里,会把慢动作提前结束(feel.gd:42)。连段中间夹一次命中顿帧,慢动作就短了。
6.5 眩晕 / 硬直
- 任何命中:敌人
_hurt_stun = 0.22s(不思考、快速减速)。 stun(s):打断当前状态 → idle,_stun_t用来画头顶星星。- 重击额外
stun(1.0);Boss 覆盖成min(1.0, 0.35)并清空招式。 - 没有「霸体/抗性」概念,所以重击对小怪就是无限控。
6.6 击退与镜头
- 玩家击退会被场地边界(90–1830)与 0.75s 无敌兜住。
- 敌人
_keep_in_view()会把怪夹在镜头内(±44px),防止被击退出画面;Boss 也吃这个(所以它不会被推到屏幕外)。 - 相机 zoom 1.25、可见宽 1536、中心 768–1152 → 场地两端 384px 是「镜头死区」。
6.7 死亡循环
hurt → hp<=0 → _kill → died 信号 → Arena._redream():
- 死亡令牌 +1(本轮修复)→ 旧协程作废;
- 1.1s 黑场 → 床头桌一闪 → 扭曲/去饱和 → 清场 → 满血复活 → 重打当前波 / Boss(本轮修复:死在 Boss 段就重开满血 Boss)。
6.8 关卡节奏与难度曲线(第一章)
| 节点 | 内容 | 玩家手里有什么 |
|---|---|---|
| 教学 | 木桩,0 伤害 | 平A / 翻滚 / 完美闪避 / 破梦 |
| 第一波 | 影卒 ×2 | 同上 |
| 第二波 | 影卒 ×3 + 浮瞳 ×1 | 同上 |
| 记忆碎片 | 场地中央 y=520,要跳起来才能吃到 | → 解锁重击 + 斩惑 |
| 第三波 | 奔角 ×2 + 浮瞳 + 影卒 | 全部能力 |
| Boss | 假面,26 血二阶段 | 全部能力 |
曲线上的问题:最难的一波杂兵(第三波)是在拿到最强控制(重击锁)之后才出现的,所以实际难度是「先难后易」;Boss 又因为横扫是单帧判定而偏软。整章的难度峰值出现在第二波(没有重击、3 个影卒 + 1 个浮瞳),而不是结尾。
7. 有没有「一张卡通吃」?
结论:有,而且不止一张。
| 卡 | 覆盖范围 | 代价 | 是否被克制 |
|---|---|---|---|
| 翻滚 | 所有攻击(近战、弹幕、Boss 冲刺、横扫) | 0.34s 不能输出 | 无(无消耗、0.1s 冷却、48% 无敌覆盖率) |
| 重击锁 | 全部小怪(含浮瞳),Boss 只能 0.35s | 2.9 DPS,怕起手被抓 | 基本没有 |
| 跳跃 | 影卒突刺、奔角冲锋、Boss 冲刺最高点、地震波 | 空中不能转向太多 | 扇形弹幕/浮瞳弹 |
| 破梦 | 任何敌人,5 伤 + 1.15s 无敌 | 10s 冷却 + 要先完美闪避 | 无 |
| 斩惑 | 被地面怪围住时,6 伤、前后 200px 清场 | 10s 冷却 + 0.26s 暴露后摇 + 打不到空中 | 对空/远程(浮瞳、跳跃中的 Boss) |
为什么这是问题:
- 完美闪避的奖励机制(慢动作 + 2.5s 窗口 + 破梦)奖励「迎着攻击滚」,而翻滚本身又最安全 → 玩家没有理由选别的解法。
- 重击眩晕 1.0s 与 1.03s 循环几乎相等,是「差一点就能无限控」的数值,实际靠每击 0.22s 硬直兜住了。
- 跳跃对所有地面判定免疫(纵向 56–120px vs 跳高 173px),而全场没有对空招式。
8. 下一章要补的「反制手段」(设计建议)
如果第二章想做出真正的攻防选择,建议按这个顺序加机制(每一条都能单独解决一张卡):
1. 反翻滚:多段/持续判定(判定持续 >0.28s,让无敌帧吃完还在),或者「抓取/投技」直接无视无敌帧(代码里给 hurt() 加一个 unblockable 参数即可)。 2. 反跳跃:对空弹幕、上升气流/落雷、把玩家从空中打下来的下砸。 3. 反重击锁:给精英/Boss 加「眩晕抗性递增」(每次眩晕时长 ×0.6,最低 0.2s),或者霸体状态(受击不掉状态)。 4. 让斩惑/破梦变成「解题」而不是「伤害」:例如破梦专门破盾/破甲,斩惑专门清弹幕,而不是纯数值。 5. 背击/方向机制:如果要做「从背面打」,得真的加方向加成(现在只有站位意义)。 6. 给翻滚加成本:体力条,或者把无敌帧挪到 0.12–0.28(要求预判而不是无脑滚)。
8.1 可以给后续章节加的「技巧 / 招式」草案(按成本从低到高)
| 草案 | 做法 | 成本 |
|---|---|---|
| 蓄力斩 | 长按 K 蓄 1.2s → 6 伤、破霸体,松手才出 | 低:复用 HEAVY 结构,加 charge 字段 |
| 背击加成 | take_hit 时比较 dir 和敌人 facing,背后 ×1.5 | 低:一处判定 |
| 处决 | 敌人眩晕时靠近按 E → 秒杀 / 回 1 血 | 低:读 is_stunned() |
| 弹反 / 见切 | 受击前 0.12s 内按 K → 免伤 + 大硬直 | 中:在 hurt() 前面插一层判定 |
| 空中连段 | 空中 J 之后再来一段下劈,落地砸地 | 中:扩 COMBO 和 _do_attack 的空中分支 |
| 翻滚层数 | 翻滚消耗一层、完美闪避回一层;层数用完只能走位 | 中:动核心手感,要重新调所有敌人 |
9. 实战技巧清单(给玩家 / 给设计参考)
1. 贴脸打三段:轻击 DPS 最高(6.1/秒),后摇 32% 处按 J 直接接下一段,别等动作放完。 2. 重击锁:解锁重击后,对小怪用 K → K → K,1 秒眩晕 + 0.22s 硬直,怪永远出不了手;精英/Boss 用 K 打断起手。 3. 滞空砸地:跳起来按 J,落地 130 半径 2 伤——前期没有重击时的清群主力,也能砸浮瞳。 4. 完美闪避是「撞」出来的:看到前摇就往攻击里滚,判定在 0.02–0.26s,成功率高得离谱,还给 2.5s 输出窗。 5. 破梦当无敌用:1.15s 无敌 + 5 伤,Boss 连段里直接按 J 反打。 6. 斩惑绕身:被包围时按 K,前后 200px 都能打到;但别对浮瞳和跳起来的 Boss 用(打不到)。 7. 跳着躲奔角:冲锋纵向判定只有 56px,跳过去它自己撞墙硬直 1 秒,白给。 8. Boss 横扫站远:>380px 完全安全;或者滚到它背后(背后 -85px 内才有判定)。 9. Boss 冲刺必须滚:纵向判定 120px,跳跃只有最高点能躲,别赌。 10. 半血是白给窗口:二阶段强制收招 0.9 秒,进去打一套。 11. 空中冲刺是位移技:1150 速 + 0.18s 无敌,用来躲弹幕/换位,不消耗次数。 12. 别在翻滚里按 J:攻击缓冲只有 0.16s,翻滚还剩 >0.16s 时按的 J 会被吃掉,等滚完再按。
10. 代码里的「文档 / 实现不一致」与小问题
| 位置 | 问题 |
|---|---|
player.gd:44 + README | 重击写着「235px 突进」,实际位移只有约 6–8px |
arena.gd:593 提示 | 「从背面打」没有背击加成,只有横扫的判定圆心在身前所以背后安全 |
player.gd:510 | _roll_grace 除了复活时清零外从未赋值,是死代码(本来可能想做「宽容窗口」) |
feel.gd:42 | 顿帧结束无条件把 time_scale 设回 1.0,会截断正在进行的慢动作 |
player.gd:147 | 攻击缓冲 0.16s,完美闪避后立刻按 J 可能被翻滚吃掉(建议 0.24–0.3s) |
enemy.gd:57 | 浮瞳的 _hurt_stun 会让它停止悬浮逻辑(被打时原地掉),小问题 |
hud.gd | 连击数只统计命中次数,不是连段数,也不影响伤害 |
*数据来源:actors/player.gd、actors/mask_boss.gd、actors/{enemy,shadow_soldier,eye_floater,charger,practice_dummy}.gd、autoload/feel.gd、scenes/arena.gd。*