靠近、对刀,再到 combo:对刀中Combo条件的定量分析

前面几篇文章处理的都是单次判定的问题:这一下打得对不对、这次攻击能不能开启 combo、这个窗口有多少容错。它们回答的是“某一拍”。

但在实际游戏里,combo 不是凭空出现的,它是一条线走到的结果:

两个人先靠近 → 进入互相能打到的距离 → 开始对刀 → 双方轮流命中、互相推挤 → 直到某一轮,其中一方出现失误,被推着向后走 → 另一方抓住这一下,把他锁住。

combo 就是在这条线的最后一刻开始的,能不能迈过去取决于前面每一步的状态。

这篇文章要问的就是:这条线是怎么一步步走到的。 我们把其中可以量化的部分拆开来看,最后会落到一个很具体的数字上。

一、对刀是什么:10 tick 一循环

1. 一轮对刀里发生了什么

两个人先快速靠近,进入互相都能打到的距离。然后一方先攻击,另一方紧接着攻击:先出手的一方命中,把对方击退;对方挨了这一下之后照样能还手,同样把先出手的人击退一次。

因为玩家的硬直是 10 tick,这一来一往就固定成了一个 10 tick 的循环:每过 10 tick,双方各命中一次。

关键在于:既然两个人都在一直攻击,每一轮对刀其实可以看成同一个对刀的平移——双方推进和后退的轨迹、速度、命中的节奏都一样,变的只是整体的位置。

位置会因为各种原因发生偏移,常见的比如:

  • 有人漏了拍:少推进一下,或者干脆没有还手;
  • 有人主动远离:放开前进、脱离接触;
  • 服务器结算出来的击退偏大或偏小:同一次命中,被推开的距离不一样。

也就是说,对刀就是“同一个对刀,被平移到一批不断变化的位置上”反复进行。决定下一轮能不能开 combo 的,不是招式,而是这一轮结束时两个人停在哪里。

2. 循环的结束:一个足够大的失误

多数轮次里双方都正常点,对刀就这么一直循环下去,直到某一轮出现一个足够大的失误:对方高速后退,对刀没法再按原来的节奏继续。

接下来的走向有两种:好的情况是直接接上 combo;另一种情况是他只是单纯飞出了距离,你需要重新开启一个新的对刀循环——而那个新循环和原来的已经不是同一个了。

对刀循环示意

二、失误的定义,以及为什么必须有失误

1. 失误的定义

为了计算方便,本文把“失误”定义成一件很具体的事:

从对方收到一次击退的那一刻开始,他连续漏掉了几拍没有攻击。(也就是这几拍他没有按攻击键。)

这是最小的一种失误:他只是没点,别的什么都没做。松开前进、防砍、下蹲,或者任何别的操作,都是比它更严重的失误——只要这种最小的失误够用,那些更严重的自然也够用。

2. “需要几次失误”就是容错

于是“这一轮能不能开 combo”被压缩成一个数字:至少需要对手漏几拍。

  • 数字越大,你越依赖对手犯错,越难开;
  • 数字越小,越容易开;
  • 数字为 0,意思是对手一次都不漏,你也能把他锁住。

3. 为什么必须有失误

前面几篇讲过,combo 的原理是延迟加上客户端插值。在这个原理里,最重要的一项是对方在收到击退之前那几个 tick 的速度:他向后的速度越大,你在距离上占的优势就越大。

而在对方不失误的情况下,他在收到击退之前的最后几个 tick 里速度基本是往前的——他自己也在推进,会把你刚建立起来的那点距离优势吃掉。所以我们基本上必须要对方失误,才有可能开出 combo。

当然,光有失误还不够:还需要对方的硬直已经过去,而且距离刚好落在 combo 的容错范围里。

因此,我们在 0.70 和 0.85 两档击退强度下,穷举了不同距离、不同出手时机的组合,得到每一组条件下能 combo 对方所需要的最少失误次数。

三、两个参数决定需要几次失误

1. 参数一:出手时机

第一个参数是你什么时候还手:被击中、收到击退之后,隔几拍才按下去。下面用 k 表示这件事:

  • k = 0:收到击退后立刻还手;
  • k = +4:收到击退后等 4 拍再还手;
  • k = −2:比收到击退还早出手,也就是抢手。

2. 参数二:当时的距离

第二个参数是这一拍的实际距离,用你眼中对方的距离表示(你按下攻击时,自己客户端算出来的那个距离)。

3. 结果

把每一轮里对手所有可能的点击情况都过一遍,就能得到每个(出手时机,距离)组合需要对手漏几拍。下面这张表按出手时机汇总,击退强度固定为 0.70:

出手时机 k −2 −1 0 +1 +2 +3 +4 +5 +6
至少需要对手漏几拍 3 4 3 2 1 1 1 1 开不了

距离这一维在上面被压掉了,完整的结果直接看下图(横轴是距离,纵轴是出手时机,颜色是至少需要对手漏几拍,灰色表示这一轮开不了):

需要失误拍数热力图

四、主要发现:hit select 确实有效

1. hit select 是什么

hit select 是被动的一招:本地被击中之后不立刻还手,隔几拍再出手,然后恢复正常的对刀节奏。

对照第三节的表格,它就是 k = +2 到 +5 那一段。

2. 它把需要对手失误的次数压了下来

从表里直接读出来的结果:

出手方式 至少需要对手漏几拍
抢手(k = −1) 4
立刻还手(k = 0) 3
hit select(k = +2 ~ +5) 1

也就是说,同样一轮对刀,只是把出手时机推迟了几拍,需要对手失误的次数就从 4 拍降到 1 拍。

举个具体的例子。同一轮对刀、同一个距离,唯一的差别是对手漏不漏那 1 拍:

对比项 对手漏 1 拍 对手满点
你命中对手 4 次 4 次
对手命中你 0 次 3 次
对手眼中你的距离(最小值) 3.27 2.59
40 拍里两人的位置 从 −0.9 / 2.8 一路推进到 6.2 / 8.9 几乎没动,停在 0.3 / 2.9

两边都是“每 10 拍命中一次”,但一边的对手一次都打不出来、两个人被一路推着走;另一边的对手反打了 3 次,两个人在原地缠住。差别不在谁多挨一刀,而在距离能不能被拉开。

漏 1 拍与满点的对比

3. 击退更强时,甚至不需要对手失误

把击退强度从 0.70 提高到 0.85,整个局面会明显变松:

击退强度 能开的格位数量 最好的结果
0.70 115 需要对手漏 1 拍
0.85 316 需要对手漏 0 拍(有 9 个格位做到)

在 0.85 下,k = +2、+3、+4 这几档出现了“对手一拍都不漏也能把他锁住”的解——这在 0.70 下是不存在的。

击退强度对比

五、对刀过程中不要主动用 hit select

上面说的 hit select 是被动用的:你被对方打中之后,先不还手。但如果在双方正常对拼、谁都没挨打的时候主动停一拍,那就是另一种情况了。

这种主动停顿本质上就是主动失误——你少了一拍攻击,位置和速度就交给了对方。这时候如果距离不对,接下来被 combo 的就是你自己。

所以对刀过程中不要主动这么做,除非确定安全。

六、怎么开 combo

把上面的内容收成几条可以直接用的结论:

  1. 对刀是一个 10 tick 的循环,输出是“至少需要对手漏几拍”,输入是“你的出手时机”和“当时的距离”;
  2. 使用 hit select:被打之后不要立刻还手,等 2 到 5 拍再出手,需要对手失误的次数能从 4 拍降到 1 拍;
  3. 要主动把距离控制到极限距离附近:同一档时机下,距离越靠近自己攻击距离的上限越宽松,最好的解都出现在那里;
  4. 击退越强,combo 越容易建立。在较强的击退下,甚至存在对手一次都不失误也能锁住的情况;
  5. 对刀过程中不要主动用 hit select:这一招要在被打之后被动使用,双方正常对拼时主动停一拍等于把节奏让给对方。

七、适用范围

  • 本文结论来自 1.8.9 水平面上的对刀模型:只考虑一条水平轴上的距离与击退;
  • 只看两档击退强度(0.70 与 0.85),不含跳跃、不含地形与方块;

靠近、对刀,再到 combo:对刀中Combo条件的定量分析
https://wtazuresky.github.io/2026/09/14/duel-and-combo-lock/
作者
WTAzureSky
发布于
2026年9月14日
许可协议