专业IT网络知识平台,分享IT百科知识、生活百科知识解答!

易企推科技
易企推科技

CSGO弹道机制详解(csgo控枪技巧)

来源:小易整编  作者:小易  发布时间:2023-05-15 09:30
摘要:首先谈一下子弹“飞行”的机制,我们在此称之为弹道机制。至于为什么“飞行”加引号,是因为大部分FPS类型游戏的子弹(Bullet)机制都是函数型,子弹并非实体而仅仅是一个空间直线函数。也就是在武器击发的瞬间,游戏引擎和服务器会将当时的状态参数...

首先谈一下子弹“飞行”的机制,我们在此称之为弹道机制。至于为什么“飞行”加引号,是因为大部分FPS类型游戏的子弹(Bullet)机制都是函数型,子弹并非实体而仅仅是一个空间直线函数。也就是在武器击发的瞬间,游戏引擎和服务器会将当时的状态参数带入进一个函数公式,生成子弹的运行轨迹,这个轨迹一般为直线,而这条直线如果与Hitbox重合,则判定为命中。这个过程是瞬发的,也就是说子弹是瞬间完成整条轨迹,因此并不用花费时间在空中“飞行”。

CSGO弹道机制详解(csgo控枪技巧)

从这个图片可以看出子弹命中Hitbox的轨迹是一条条直线(红色)

CS系列游戏也遵循这样一个典型的弹道机制,CS:GO中影响子弹飞行轨迹最关键的两个因素就是后坐力(Recoil)和随机散布(Inaccuracy),本文将通过介绍这两个概念和其相关的机制,从理论上解释子弹是如何“飞行”的。最终可以从中总结出怎样将尽量抵消和减轻Recoil和Inaccuracy的影响的理论方法,达到使扫射更密集的目的。同时通过介绍扫射时子弹命中的样式图形“Spray Pattern”来具体阐述大家应该怎样去控枪。这也是各位玩家成为进阶选手的必修理论课。(为了与国外习惯名称对接,下文这几个概念直接使用英文名称)

后坐力Recoil

下面这个动图是在鼠标保持不动(准星固定)的情况下,左键不松手AK连续击发30发的弹着点轨迹示意图。可以从图中看出,在后坐力(Recoil)的影响下,子弹先基本垂直的向上弹跳,然后转向左上方,最后保持在基本水平的一个区域内来回摆动。而且,除了前一两发子弹外,弹着点基本上与准星位置是不同的。扫射时,子弹命中的位置主要跟准星指向相关,同时也很小程度的受人的视角的影响,而基本上所有子弹的弹着点都在你的准星上方。

AK扫射弹着点轨迹

因为弹着点都在准星上方,所以很自然的,即使是新手也会在扫射的时候向下压枪,即把准星压向敌人的下方,来尽量抵消后坐力导致的子弹上跳。而职业选手和高玩控枪可以一直持续到水平摆动阶段,也就是保证连续将十几发甚至30发子弹都控制在一个密集的区域,这样可以使更多的子弹命中瞄准的区域和目标。而每一把武器后坐力导致的子弹弹跳模式(Recoil Pattern,游戏中参数为Recoilseed)是绝对始终一致的,即每一次扫射子弹的上跳的弹着点都会遵循这个特定的轨迹,不会产生变化,这也是可以通过反复练习来达到精准控枪扫射的前提。例如M4A4和M4A1的Recoilseed编号均为38965,但由于下文所提到的Inaccuracy的影响稍微不同,导致两把武器的扫射弹道看起来是不同的。

子弹随机散布Inaccuracy

以静止站立不动时单发定点射击来举例说明Inaccuracy的机制,这个机制与现实中枪械是相同的。以静止单发定点射击为例说明,理论上子弹是会直线飞往准星中心,但受Inaccuracy影响,在水平轴X轴和垂直轴Y轴上会产生随机的一个偏差(Spread),导致子弹不会命中准星中心。在下图中,笔者使用SCAR20在站立不开镜、准星不动的情况下进行单发射击,这时该武器的Inaccuracy为25.80,处于较高水平,最终开镜观察弹着点分布,可见子弹基本上都散布在中心周围较大的一个圆形区域内(图左);而在同一位置开双倍镜射击,此时的Inaccuracy为2.00,十发子弹的弹着点基本上为同一个点(图右)。通过对比就可以直观的得出Inaccuracy对弹着点的影响方式和程度。

Inaccuracy对单发定点射击影响示意图

同理,在扫射时,子弹命中位置是受Recoil Pattern函数计算出的所应命中的位置基础之上再叠加一个随机偏差(Inaccuracy影响)。这也就是虽然每一把武器的Recoil Pattern在每一次扫射时都是固定的,但每次定点扫射三十发的弹着点都稍微有些不同的原因所在。2016年8月4日,CS:GO进行了一次更新,将扫射时的Inaccuracy变化机制做了一些修改,目前在扫射的前几发,Inaccuracy递增较小,子弹基本垂直上跳;而在几发后,其Inaccuracy递增至最大值,这时的散布较以前更大。这次更新鼓励了短点射、5-6发扫射等技术,跪地三十发控枪的打法受到了一定程度的削弱。

连续三次AK扫射中,可见弹着点分布受Inaccuracy影响是不同的

另外,同一把武器Inaccuracy数值受人物姿态影响,数值为蹲伏小于站立,站立小于跑动,跑动小于跳跃。也就是说站立或者蹲下扫射要比跑打准确的多,这个机制是在对枪时必须考虑的因素,要选择自己适合的姿态来平衡精准度和被击中的风险,同时练习好急停射击。在蹲伏和站立状态下也更好进行扫射控枪。

扫射图形SPRAY PATTERNS

我们可以通过MOD的方式来人为将Inaccuracy设置为0,这时候定点扫射的图形(Pattern)就是完全仅受Recoil影响而不受Inaccuracy影响的理论图形,我们称之为Spray Pattern。上文已经讲过,每一种武器的Spray pattern都是固定不变的。我们可以通过学习这个Spray Pattern来分析武器的子弹分布模式。

下图为AK和M4A4的Spray Pattern,可见两者非常类似,都是先垂直上跳,然后偏向左方,最终在一个水平区域内来回摆动。但M4A4的精度明显高于AK,其散布相对较为集中。

AK Spray Pattern

M4A4 Spray Pattern

同时,扫射图形基本只适用于分析全自动武器(即按住左键可以连发的武器),半自动武器(即每一发都需要单击左键,例如手枪)的Spray pattern机制与全自动武器稍有不同,其spray pattern并不是固定不变的,而是每一次稍带随机性。

如何控枪

现在我们已经了解了Recoil、Inaccuracy、Spray Pattern等理论知识,现在就可以依据这些信息来研究控枪的方法,来尽量抵消Recoil和Inaccuracy因素的影响,将扫射的子弹控制得更密集。首先下图说明了单纯垂直压枪对弹道的影响(剔除了水平方向的Inaccuracy影响),即前几发可以控制在一个点,而子弹进入水平晃动阶段后就整体失控了,不能达到控枪的效果。

AK垂直压枪弹道轨迹

M4A4垂直压枪弹道轨迹

因此要实现多发的控枪,除了垂直方向的压枪之外,必须还要结合水平方向的修正,才能保证30发都能集中命中目标。这时候的控枪准星轨迹就是一条曲线,可以抵消子弹的上跳。下图为理论上的AK和M4A4压枪轨迹,如果按照这条曲线路径和准星移动速度进行压枪,可以将弹着点控制在相当密集的区域内。玩家可以通过按照这条轨迹不断练习,将控枪提高到相当高的水平。

AK完美控枪曲线

M4A4完美控枪曲线

另外要说的是,CS:GO的弹道机制实际上比本文所介绍的复杂的多,弹道的函数中包括几十个参数,其中每一个都会影响到这发子弹的轨迹。本文只是建立了一个CS:GO弹道机制原理性的示意性模型,但已经足以阐述清楚弹道机制是怎样运作的。至于每一个参数具体的作用及数值,感兴趣的玩家可以查询资料文档了解相关内容。


本文地址:游戏攻略频道 https://www.hkm168.com/game/961663.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


游戏攻略
小编:小易整编
相关文章相关阅读
  • 实用Word技巧分享:2招轻松解决多图片排版!

    实用Word技巧分享:2招轻松解决多图片排版!

    多图片排版,是Word编辑文档时常见场景之一,几乎每个人都会碰到,对很多人来说仍然是一大难题。当图片数量一多,很多人都不知道图片该怎么摆放,如何快速高效地搞定一组图片?因为没有掌握系统的套路技巧,每次制作都花费大量时间,做不出满意的效果。今...

  • 什么是构造函数?详解JavaScript中的构造函数

    什么是构造函数?详解JavaScript中的构造函数

    作为原型和原型链的基础,先了解清楚构造函数以及它的执行过程才能更好地帮助我们学习原型和原型链的知识。本篇文章带大家详细了解一下javascript中的构造函数,介绍一下怎么利用构造函数创建一个js对象,希望对大家有所帮助!一个普通的函数被用...

  • 什么是Linux系统中nc命令?nc命令的用法详解

    什么是Linux系统中nc命令?nc命令的用法详解

    这篇文章主要介绍了linux系统中nc命令的基本用法,nc命令非常之强大,这里先简单介绍它用来作端口扫描以及文件传输等的基础使用。功能说明:功能强大的网络工具,在网络工具中有“瑞士军刀”美誉,其有Windows和Linux的版本。因为它短小...

  • Java中的Scanner操作详解

    Java中的Scanner操作详解

    scanner是java中的一个常用类,用来读取控制台或文件中的输入数据。它提供了一种简单的方式来解析基本类型和字符串,并支持对正则表达式进行匹配。Scanner类位于java.util包中,因此在编写程序时需要import...

  • 使用Go语言进行大数据分析的常用技巧

    使用Go语言进行大数据分析的常用技巧

    使用Go语言进行大数据分析的常用技巧随着大数据时代的来临,数据分析成为了各个领域中不可或缺的一环。而Go语言作为一种强大的编程语言,其简洁、高效的特性使得它成为大数据分析的理想选择。本文将介绍一些使用Go语言进行大数据分析常用的技巧,并提供...

  • 实用Word技巧分享:简繁转换功能竟然可以这样用!

    实用Word技巧分享:简繁转换功能竟然可以这样用!

    作为一名办公人员,如果你的单位与一些香港或台湾的客户合作,那么,在制作或编辑合作文档时,通常需要将简体字文档转换成繁体字文档。因为双方的书写习惯不同,如果你给对方发送一篇简体文档,可能会造成对方阅读困难,会非常麻烦。所以,如何解决这个问题呢...

  • 带你搞懂git回滚代码(实例详解)

    带你搞懂git回滚代码(实例详解)

    本篇文章给大家带来了关于git回滚代码的相关知识,git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理,希望对大家有帮助。在日常coding的过程中免不了分支之间的合并,回滚、提交、打tag等操作,如果你现...

  • C++中的取余函数详解

    C++中的取余函数详解

    C++中的取余函数详解在C++中,取余运算符(%)用于计算两个数相除的余数。它是一种二元运算符,其操作数可以是任何整数类型(包括char、short、int、long等),也可以是浮点数类型(如float、double)。取余运算符返回的结...

  • 周排行
  • 月排行
  • 年排行

精彩推荐