投掷物轨迹从来不只由出手点和鼠标决定,墙面的碰撞几何、弹跳系数与道具线落点共同构成一条随时可能被版本改写的路径。本文从碰撞盒的隐形棱切入,拆解为什么默认道具线必须按版本重练,以及如何在训练中建立可迁移的投掷直觉。
导语
很多人练道具的方式是记住一条线:站在这里,瞄这里,跳投。这条线在当版本有效,下个版本可能就变成“差半格”。问题不在于你记性不好,而在于你记的是结果,不是几何。投掷物轨迹的本质是一次带能量损耗的碰撞求解,墙面不是平面,是台阶、棱角与碰撞盒的拼接。版本一动,最先变的往往不是重力,而是这些“隐形棱”。
一、碰撞盒的隐形棱:为什么弹跳点比出手点更敏感
先厘清一个事实:CS2 的投掷物碰撞检测用的是简化的碰撞几何,而不是你眼睛看到的贴图表面。贴图上的砖缝、浮雕、装饰线条不参与碰撞,真正参与的是被烘焙出来的碰撞盒。碰撞盒为了性能做了简化,于是墙面在物理世界里不是光滑的,而是由若干平面拼出的“台阶”。
这些台阶之间的交界就是隐形棱。投掷物擦过棱角时,入射角与反射角的计算会瞬间换一个参考面。你看到的是“弹了一下”,物理上是一次法线方向的突变。出手点差半格,命中棱角的位置就不同,反射后的落点可能差出两三个身位。这就是为什么同一套默认道具线,在版本更新后有人觉得“还能用”,有人觉得“完全不对”——他们站的位置不同,碰到的棱不同。
更隐蔽的是弹跳系数。不同材质的碰撞面在引擎里带有不同的能量损耗参数,木质、金属、混凝土在弹跳后的速度衰减并不一致。版本更新如果调整了某类表面的物理参数,或者重新烘焙了某张地图的碰撞盒,你记忆里的“弹一下刚好进烟”就会变成“弹一下砸墙”。这不是玄学,是参数迁移。
二、默认道具线的三层依赖:出手、棱、落点
一条默认道具线看似只依赖出手点,实际上至少有三层依赖。
第一层是出手点与视角。站位的脚位、蹲起状态、鼠标的俯仰角,决定了投掷物初始速度矢量的方向与大小。跳投的时机还额外叠加了角色垂直速度,这一项在 tick 采样下并不连续,所以同一套跳投在不同网络条件下会有细微差异。
第二层是碰撞路径上的棱。从出手点到落点之间,投掷物可能经历一次或多次弹跳。每一次弹跳都是一次信息损失:你只知道大致会弹,但不知道会擦到哪条棱。默认道具线的价值在于它把这条路径压缩成一个可复现的动作,但可复现的前提是棱没有变。
第三层是落点判定。烟雾的展开是一个体积,闪光的引爆是一个计时,燃烧的蔓延是一组火焰单元。落点差半格,烟雾可能少封一条缝,闪光可能早爆零点几秒。这些差异在训练图里看不出来,在实战里就是“我先看到烟边”还是“我先被白”。
三层依赖里,出手点最容易被记住,落点最容易被验证,唯独中间的棱最容易被忽略。而版本更新最常动的,恰恰是中间这层。
三、按版本重练:不是推翻记忆,是重建索引
听到“按版本重练”,很多人的第一反应是把所有道具线推倒重来。没必要,也不现实。更合理的做法是重建索引:把“站位—瞄点—落点”的线性记忆,改写成“出手点—预期弹跳次数—关键棱—落点容差”的结构化记忆。
具体怎么做?第一步,在训练图里把每条默认道具线拆成两段:出手到第一次弹跳,第一次弹跳到落点。分别记录这两段的容差。如果第一段容差很小、第二段容差很大,说明这条线对棱很敏感,版本更新后要优先复验。
第二步,给每条线标注“可替代落点”。同一颗烟往往有两到三条路径,版本调整后一条失效,另一条可能仍然可用。把替代路径提前练进肌肉记忆,比临时找线靠谱得多。
第三步,建立版本复验清单。每次大版本更新后,先跑一遍对棱敏感的线,再跑容差大的线。不要凭感觉“好像还能用”,要用落点判定说话:烟有没有缝、闪有没有白、火有没有烧满。
四、可迁移的投掷直觉:从记线到读面
真正抗版本的不是某一条线,而是一种读面的能力。看到一面墙,你能大致判断它的碰撞面朝向、棱的位置、弹跳后的速度衰减方向。这种直觉来自反复的“故意打偏”:在训练图里故意让投掷物擦棱,观察反射角的变化,记录不同材质下的弹跳距离。
当你有了读面的能力,版本更新就不再是“我的线废了”,而是“这面墙的棱变了,我换个擦法”。默认道具线依然要练,但练的目的不是背答案,而是建立一套可以随版本迁移的几何直觉。墙不是平面,是台阶;道具线不是咒语,是路径。路径会变,几何不会骗人。