战地1子弹飞行速度及下坠的原理 您所在的位置:网站首页 战地刘将军半自动步枪怎么解锁 战地1子弹飞行速度及下坠的原理

战地1子弹飞行速度及下坠的原理

2023-09-19 11:24| 来源: 网络整理| 查看: 265

正经FPS

    众所周知,在众多FPS大作中战地系列有着相当真实的子弹飞行轨迹,战地1在此之上更进一步,本文将详细介绍这一系统。

    在介绍子弹飞行系统前,我先贴一段Symthic Forum的帖子(http://forum.symthic.com/battlefield-1-general-discussion/11500-things-that-i-like-will-miss-about-bf1/),战地1的子弹速度(以及相对伤害大小)是非常贴近史实的:

    “DICE在战地1中非常注重还原历史真实武器的子弹速度,在前代战地中,子弹速度是一个常数且总是低于与之对应的相同口径的现实武器,战地1子弹有着相对前代更高的初速,并会受到空气阻力而下降。游戏里几乎所有武器的枪口初速都与真实武器相符,例如,m1917发射的.351SLW弹药初速为570m/s,游戏中也是如此。一战中使用的30-06 M1906弹药有着820m/s的初速,且属于艇尾型弹头(低阻力),而在游戏中使用30-06弹药的枪(M1917,BAR,Benet,春田)都具现了这两个特性。”

    “另一个例子是,在相同口径弹药伤害的不同,例如m1917发射的.351SL和8.25(加长)发射的.25雷明顿弹药口径相同,游戏中m1907伤害更高,衰减距离更长,因为在现实中,.25雷明顿弹头重7.5g,枪口动能1600焦,而.351SL重11.6g枪口动能1900焦。”

    接下来进入正题,影响武器子弹轨迹的参数只有两个:枪口初速(Muzzle velocity)与阻力(drag),这两个参数都可在symthic查到,大多数枪的drag值相等,都是0.0025,使用30-06弹药的枪(M1917,BAR,Benet,春田)为0.002,有坂38式步枪也是0.002,特别地,坦克猎手Tank-Gewehr的子弹初速是700m/s,drag是0。

弹速的计算方法如下:

    在每一个逻辑帧下,该逻辑帧内子弹受到阻力产生的加速度a等于阻力drag乘以本逻辑帧内子弹速度的平方: a= -drag*(v^2),那么本逻辑帧子弹速度减去加速度造成的减速即是下一逻辑帧的速度。

    例如,G98的Muzzle velocity= 880m/s,drag= 0.0025,在60Hz逻辑帧服务器下,

第一帧(1/60秒),子弹速度为880m/s,加速度为 a= -880^2*0.0025= -1936m/s^2,在1/60秒内造成减速:v= at= -32m/s

第二帧,v= 880-32= 848m/s, a= -848^2*0.0025= -1798m/s^2,减速: v= at= -30m/s

第三帧,v= 848-30 = 818 m/s, a= -818^2*0.0025 = -1673m/s^2,减速: v= at= -28m/s

第四帧,此时距离子弹发射仅过去0.05s,这时子弹速度已经降到790m/s

逐帧计算,依次类推....

    下坠就简单的多,游戏中的重力 g= 12m/s^2,只要知道时间就能计算下坠距离,需要注意的是,精确计算游戏中的下坠距离仍然要按照上面所示的逻辑帧一帧一帧地计算,不过结果和 g(t^2)/2算出来的差距很小。

明白了以上基础机制,接下来介绍游戏中更复杂的一些细节

    玩过战地系列前作的玩家应该知道所谓调零系统,即默认枪口稍微斜向上使子弹作抛物线运动轨迹,在一定距离上抵消下坠。这个系统是默认隐藏在战地1枪械中的。

    以G98为例,当向水平方向射击时,枪口初速除了水平方向上的 Vx= 880m/s,还包含了一个垂直向上的初速度 Vy= 1.045m/s,这个初速度目的就是调零,经过计算,G98子弹在重力的作用下将在90m处掉到"0"的位置,也就是瞄准镜看到的中点,即G98的默认调零大概90m。有玩家可能会想,90m前子弹高度是正的,会不会出现瞄准头,子弹却从头上飞过?答案是影响很小,90m前子弹的最高点出现在75m,高度为0.00376m,不到4毫米。

    另一个细节从开始的图中可以看出来:子弹不是从瞄准点(眼睛)射出来的,而是从枪管射出来的,这意味着子弹的射出点在你瞄准点之下,即子弹的初始高度是负的:-0.045m,4.5厘米(上一段计算考虑了这个因素)。这就是为什么有时从掩体边缘上方射击敌人,子弹会被掩体挡住,因为枪线在视线下方被掩体挡住了(当然有时是因为掩体建模粗糙)。

    所以总结来说战地1的子弹轨迹是这样的:

Only in Battlefield1

    Symthic论坛在A测就开始研究BF1的弹速模型,Symthic站长Miffyli写了一个可以直接计算飞行时间和下坠的计算器(以60Hz逻辑帧计算):

http://forum.symthic.com/battlefield-1-general-discussion/10562-first-approach-to-air-drag-model-in-bf1/#post317578

    我上文的数据都来源于此,接下来解释如何使用:

弹速/下坠计算器@Miffyli

    Velocity x即枪口初速(Muzzle velocity),Drag即阻力(Drag)。基本不用动的参数:Velocity y即垂直初速,Position y即枪线高度,Gravity即重力。移动鼠标可查看不同距离的数值,方框中“190”即距离,“Drop”即子弹距瞄准线高度/下坠,Time即打到此距离的飞行时间

    用这个计算器可以解决一个强迫症难题:春田在多少米开始比G98飞行时间更短?结果表明是260m,>260m 春田先到,



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有