使命召喚OL中武器的後坐力是大家議論紛紛的問題,今天有玩家就帶來了一篇關於使命召喚系列中,武器後坐力機制以及運算方法的文章,可以算是比較深入的科普, 涉及到大量數學知識和公式, 是高階玩家瞭解遊戲必備只一,下面我們就一起來看看吧。
為了方便理解和保密性質的原因, 帖子內的演算法用作演示和測試, 無法直接套用到遊戲中去,
Recoil這很好理解, 就是玩家在玩FPS時候的所謂"後坐力". 但是這個"後坐力"的學問是很大的, 如何做的真實, 如何做的準確, 如何做的適合玩家上手都是困擾很多FPS遊戲設計的一個難點.
Recoil = "後坐力"在遊戲中如何體現呢?
1、Spread"散佈"
在遊戲中散佈是一個硬資料, 也就是說他的資料是定死的(但他是個變數, 不好理解的話可以理解成一個範圍值但這個範圍值是定死.), 在COD中武器有兩種擊發方式, HIP(掃射)和ADS(瞄準), 但是在COD中"散佈"只對掃射情況下有效. 在ADS的情況下武器實際上是沒有散佈的. 那麼為什麼在遊戲的時候武器瞄準打在槍上的時候不是也有散佈麼? 其實是GunKick和ViewKick的產生了作用.
2、Gun Kick (槍口跳動)
就是當武器擊發時, 武器會隨著擊發而在螢幕上左右上下的晃動. 同時這個晃動是有相互作用的, 槍口向左跳的同時武器也會回到中心點, 如果連續擊發那麼下一次的跳動就是向右, 同時武器在停止擊發的時候不管怎麼樣他都會回到中心點, 這個回覆的速度稱之為迴歸原點速度, 速度越快回到原點的速度越快,武器精度就大大提高.
3、View Kick (視野跳動)
這是最容易被混淆的機制, 視野跳動是武器在擊發時, 武器會跳動離開武器瞄準的原點, 他會跳動上下左右的任意方向, 實際上這個機制是螢幕在調準視角而不是武器的模組在跳動. 這個跳動可以通過玩家的操控來控制也就是玩家所稱的"壓槍".
ViewKick移動視野和GunKick移動模組是兩個模組最大的不同.
4、Visual Recoil (效果跳動)
這只是遊戲武器的動畫模擬, 沒有實際的資料所以不直接影響武器的"後坐力", 這是一個提高武器真實度的表現手法, 這就是為什麼當你感覺武器在跳動時打不中敵人, 想修正彈道但是怎麼都打不中的原因,實際上你是打中了只是效果跳動給了你打不中的錯覺,所以COD加入了Hitmarker來幫助玩家判定是否擊中了目標.
5、Center Speed (迴歸原點速度)
這是非常重要的一個武器資料, 很容易理解它是當武器產生後座之後一段時間, 武器將會迴歸到原點的速度, 速度越快, 你武器回到原點的速度也越快, 後坐力影響也就越小.
以上是純的理論知識, 如何運用到顯示的演算中呢?
在COD MW2中 Gun Kick 和 View Kick 都獨立的體現在X維度和Y維度.
Gun Kick 允許跳動在軸交叉中進行, 武器的跳動可以不需要回到原來的軸就進行下一次的跳動.
以下為演示用的值和套用的公式:
adsGunKickReducedBullets的資料是減少武器上跳速度需要的擊發數, 當這個資料的擊發數被程式執行的時候, 武器的上跳資料將會回到他的基本資料.當停止擊發時, 程式的計時器重新開啟等待下一次的擊發.
adsGunKickReducedPercent的資料是當adsGunKickReducedBullets擊發資料執行後有多少速度資料減少了.
adsGunKickPitchMax, adsGunKickPitchMin, adsGunKickYawMax 和 adsGunKickYawMin 是四個計算武器每次上跳時對四個方向上跳速度計算的一個數據(每秒多少度).(Pitch資料是上下的, Yaw資料是左右的, 通俗理解). 加速度是每次擊發才會產生的. ViewKick在這裡可以不考慮他的加速度, 這就是為什麼在COD武器資料中會看到ViewKick資料為0的原因.
adsGunKickAccel 這個資料是武器回覆到中心原點加速度的資料(每秒多少度). 加速度的指向永遠是武器瞄準的中心原點.
adsGunKickSpeedDecay 是一個線性阻力系數按照( s^-1 1赫茲)計算. 用來衡量武器上跳衰減的偏轉資料. (離開中心原點)
adsGunKickStaticDecay 是一個線性阻力系數按照( s^-1 1赫茲)計算. 用來衡量武器上跳衰減的迴歸到原點資料. (向原點後方移動再回到原點 re-centering).
基本上GunKick每一次上跳的資料的演算公式和演算法是:
x[t] = x_0 (+/-) g*Exp[-bt]/b^2 (-/+) g/b^2 (+/-) gt/b - v*Exp[-bt]/b + v/b
t -- 武器開始上跳時過去的時間.
x_0 -- 武器開始上跳時的位置.
v -- 武器上跳的初始速度.(取決於四個方向的初速和資料)
g -- adsGunKickAccel
b -- adsGunKickSpeedDecay 或者 adsGunKickStaticDecay, 取決於武器迴歸中心原點的實際情況.
Exp[...] -- 指數函式e^(...)
總結:
當你研究透徹之後你會發現還是不對勁! 總覺得少了不少東西, 是為什麼呢?
因為武器後坐力和手感還是需要音效和動畫做補充的. 槍槍入肉的感覺可少不了音效和動畫.其他完全不知道我再說什麼的玩家是不是感覺什麼都看不懂啊?
沒關係. 你們只需要明白MP的武器平衡是有多麼的難調整和複雜了, 武器越多越煩人, 需要調整的時間越長.想想COD每把槍都要調出有個性來的要求簡直是殘忍。