这几天研究射击游戏的武器子弹轨迹的算法。找了《战地1》来参考。下面以《战地1》来说明。
看图:《战地1》武器的全属性
M1918突击步枪
两幅图连接着看。
武器属性分为4个部分:
General (一般)
Reload (填弹)
Recoil (后坐力)
Spread (散布)
各部分属性详解
General
Damage points | 23 | 伤害曲线图上面点 |
Dropoff points | 6.0 | 下坠曲线图上面的点 |
Firerate | 900 RPM | 每分钟射速 |
Firerate (Burst) | 900 RPM | 每分钟射速(点射) |
Num. of pellets | 1 | 弹丸数 |
Muzzle velocity | 380 m/s | 枪口速度 |
Bullet drop | 12 m/s² | 子弹下坠 |
Drag coeff | 0.0025 | 阻力系数 |
Mag size | 25 | 弹匣容量 |
Projectile | 9x19mm_Gilsenti | 子弹模型 |
Deploy time* | 0.65 s | 切换武器后的准备时间 |
Hor. dispersion* | 0 | 水平分布(霰弹枪) |
Ver. dispersion* | 0 | 垂直分布(霰弹枪) |
|
|
|
Reload
Reload (Empty) | 2.8s | 填弹时间(无剩余) |
Reload (Left) | 2.1s | 填弹时间(有剩余) |
Reload threshold | 0.83x | 填弹域时间 (超过此时间而中断,再次填弹时不用从新开始填弹 ) |
Pre-reload delay | N/As | 填弹前延时 |
Post-reload delay | N/As | 填弹后延时 |
Single-bullet reload | N/As | 单发填弹 |
Bridge delay * | N/As | 第一次单发填弹的延时 |
Strip clip size | N/A | 弹夹容量 |
Strip clip reload | N/A | 弹夹填弹 |
|
|
|
Recoil
Recoil Up | 0.42 | 向上后坐力 |
Recoil Left | 0.4 | 向左后坐力 |
Recoil Right | 0.4 | 向右后坐力 |
Recoil decrease | 16 | 后坐力回复速度 |
1st shot multiplier | 2 | 第一发子弹后坐力因子 |
|
|
|
Spread (散布)
Spread increase * | 0.045 | 散布增量 |
1st shot mul (ADS) | 6 | 第一发子弹因子(瞄准) |
1st shot mul (HIP) | 6 | 第一发子弹因子(腰射) |
Spread decrease | 4.05 | 散布减少(瞄准) |
Spread decrease | 4.05 | 散布减少(腰射) |
ADS - Not moving | 0.3 | 瞄准不移动 |
ADS - Moving | 0.5 | 瞄准移动 |
HIP, Standing, Not moving | 1 | 腰射,战立,不移动 |
HIP, Crouching, Not moving | 1 | 腰射,蹲伏,不移动 |
HIP, Prone, Not moving | 1 | 腰射,俯卧,不移动 |
HIP, Standing, Moving | 1.5 | 腰射,站立,移动 |
HIP, Crouching, Moving | 1 | 腰射,蹲伏,移动 |
HIP, Prone, Moving | 1 | 腰射,俯卧,移动 |
下面解释一下后坐力和散布值对弹道的影响。
后坐力:影响武器的朝向角度。每次射击都会施加影响。停止射击回复。主意武器左右方向的后坐力相同,则子弹分布于靠近中轴线。而武器没有向下的后坐力,只有向上的后坐力,所以就有压枪的说法。压枪可以减少后坐力带来的影响。
散布:影响射击准确度。子弹从枪口飞出,会随机分布在散布值的角度内。并不会笔直命中枪口朝向的目标点。
注意:子弹的散布值,在角色各种姿态下,数值不同。因此有些武器适合腰射,有些适合瞄准,等等。
注意:第一发子弹,有些武器的后坐力和散布值,有惩罚倍率。因此不适合点射。
注意:《战地1》可以设定武器的后坐力方向。这个只是将原本向上的后坐力更改了一个方向,以方便用户的压枪习惯,并不会对后坐力大小有影响。