每次版本更新后,那些看似没改的投掷物其实已经在物理层悄悄换了账本。本文从弹跳衰减、碰撞盒精度和出手高度三个变量出发,解释为什么旧默认道具线会“突然不灵”,以及职业队如何用 20 分钟重建一套可信的投掷物坐标系。
导语
你有没有过这种体验:上周还稳稳封住 Mirage 中路的那颗烟,这周更新后落点偏了半个身位,队友说你“手抖”,但你知道自己没抖。问题不在手,在物理层。投掷物从来不是静态的——它的轨迹是版本、碰撞盒、出手高度和服务器 tick 共同写出来的一本账。这本账每隔几个版本就会被悄悄改一次,而你的默认道具线,是用旧账本背下来的。
一、弹跳衰减:不是“弹得低了”,是能量账本换了
先厘清一个常被混淆的概念:投掷物的弹跳不是简单的“反弹角度”。CS2 里手雷、闪光、烟雾的碰撞响应包含三个可调量——恢复系数(restitution)、切向摩擦和角速度阻尼。恢复系数决定垂直方向弹回多少能量,切向摩擦吃掉水平速度,角速度阻尼则影响投掷物落地后“滚”多远。
这三个量里,恢复系数最敏感。它只要动 0.02,一颗从 Inferno 香蕉道木桶上弹向三箱的烟雾,落点就能差出一个箱子的宽度。更麻烦的是,恢复系数不是全局常数——不同材质表面(木板、金属、水泥、沙地)有各自的响应曲线。当版本调整了某一类表面的物理材质,你那条“打木桶弹三箱”的线就废了,但打水泥地的线可能完全没变。
所以重练的第一步不是“再扔一遍”,而是先确认:这条线依赖的是哪种表面。依赖木桶、依赖铁皮、依赖沙地的线,各自的版本风险完全不同。
二、碰撞盒精度:你瞄的是贴图,引擎算的是凸包
第二个变量更隐蔽:投掷物碰撞检测用的不是你看得见的模型,而是一组简化凸包(convex hull)。地图作者更新某个道具的碰撞盒时,视觉上可能几乎看不出变化,但凸包的顶点位置动了,投掷物的反弹法线就跟着动。
典型场景是“贴墙扔”。你对着 Ancient 甜甜圈缺口那面墙的视觉边缘出手,以为投掷物会擦着墙皮飞过去,实际上它撞上了一个比贴图外扩两厘米的凸包,轨迹被提前折了一下。两厘米在出手点放大到落点,就是半米。
职业队的做法是:对每张图的默认道具,记录“出手点—碰撞点—落点”三段坐标,而不是只记落点。碰撞点一旦被版本改动,落点必然漂移,但如果你只背落点,你根本不知道漂移从哪一段开始。
三、出手高度:站姿、蹲姿与移动中的“隐形偏移”
第三个变量来自你自己。投掷物的初始位置绑定在角色手部骨骼上,而手部骨骼的位置受站姿、蹲姿、甚至移动速度影响。版本更新如果调整了手部骨骼的绑定偏移,或者改了蹲下时相机与手部的相对关系,你同样的准星对准,出手点就变了。
这就是为什么有些默认烟在“站着扔”时没问题,“跳扔”或“蹲扔”时偏得离谱。跳扔尤其危险:起跳瞬间的垂直速度会叠加到投掷物的初速度上,而垂直速度的数值受版本物理参数影响。你以为跳扔只是多飞一点,实际上它改变的是整条抛物线的形状。
四、重练的正确姿势:20 分钟重建坐标系
不要盲目重扔一百遍。按这个顺序来:
- 先固定站姿和准星锚点,只改一个变量,确认是出手点漂了还是碰撞点漂了。
- 用“短距离低抛”做基准测试,排除长距离空气阻力累积误差。
- 对每张图的默认道具,至少准备两条冗余线——一条依赖弹跳,一条依赖直抛。版本动了一边,另一边还能顶。
- 把新落点写进你的笔记,但标注“版本号 + 测试日期”,因为下一次更新它可能又变。
投掷物不是背出来的,是算出来的。版本税每次都要交,区别只在于你是提前交,还是在比赛里被对面用一颗你封不住的烟收走。