戰(zhàn)艦世界數(shù)學(xué)教室1坐標(biāo)系與傷害計算

此系列包含了作者大量無病呻吟和yy裝逼,純娛樂玩家勿噴。
閱讀此系列需要有基本的游戲機(jī)制知識,詳見官方運(yùn)作機(jī)制系列視頻官方小教室系列

坐標(biāo)系
???????? 船只的位置,炮彈的落點(diǎn),游戲里所有的實體都有一個物理坐標(biāo)來表示它位置。
???????? 對于一艘船,有四個參數(shù):x,y,方向角θ,桶滾角φ。x,y表示地圖上的位置,方向角是船頭指向,桶滾角是船體傾斜程度,在轉(zhuǎn)彎時會變化。這些記作p。
除了位置信息,我們還有速度v,平面上的二維向量;角速度ω,每秒改變船頭指向的速度;加速度a,每秒速度大小的改變量。角速度與我們的當(dāng)前舵的位置,速度大小有關(guān);加速度與擋位、速度大小、船體屬性、舵態(tài)都有關(guān);實際結(jié)果要看服務(wù)器是如何運(yùn)算的。
位置變化p(t+dt)=p(t)+v(t)dt
速度變化v(t+dt)=v(t)+a(t)dt+v(t)*ω
a=f1(|v|,檔態(tài),舵態(tài)),ω=f2(|v|,檔態(tài),舵態(tài))
有了這些信息,我們就能判斷一條船在滅點(diǎn)后能跑多遠(yuǎn),有可能有怎樣的移動范圍,常見的滅點(diǎn)炮,一般就是判斷目標(biāo)會保持現(xiàn)有的航行狀態(tài)打出的出其不意的一擊。
每條船都有自己的隱蔽圈、射程圈等等,即以xy坐標(biāo)為圓心做半徑為射程或隱蔽數(shù)值的圓。這里就涉及點(diǎn)亮機(jī)制,當(dāng)對方有船只在你的隱蔽圈內(nèi),且兩船瞭望塔無遮擋時,你的戰(zhàn)艦就會被發(fā)現(xiàn)。判斷對方的距離速度是否會導(dǎo)致自己被點(diǎn)亮很多時候是非常重要的,控制好速度和距離,經(jīng)常是驅(qū)逐艦內(nèi)斗時取得先機(jī)的關(guān)鍵。

傷害計算
當(dāng)我們的載具被擊中時,會受到傷害,先從分析一顆炮彈如何造成傷害開始:
以受攻擊船只模型中心為O,船頭方向為y軸:
??? 單顆炮彈造成傷害與自身裝甲模型,炮彈類型,入射位置,入射速度,入射角度,當(dāng)前模塊血量狀態(tài)有關(guān)。
??? 具體來講。裝甲模型決定是一個三維模型,是一組平面的集合(毛子的建模應(yīng)該沒有裝甲的物理厚度,只是一個有“厚度”屬性的平面);炮彈類型包括口徑,標(biāo)傷,初速度,點(diǎn)火率等因素;入射位置是船體裝甲平面上的一個三維坐標(biāo);入射速度、角度可以由這顆炮彈的發(fā)射位置和炮彈類型計算出來。
??? 炮彈的口徑?jīng)Q定你能不能碾壓,入射位置和角度決定會不會跳彈、等效裝甲厚度,入射速速影響穿深,和炮彈屬性一起決定穿深,決定你能不能擊穿,而炮彈標(biāo)傷和模塊血量決定這一發(fā)炮彈能造成多少傷害。
??? 寫做函數(shù)self.destroy=D(P_in,P_out,Inf_ammunition)
??? Self包含所有自身狀態(tài),P_in是相對入射點(diǎn),P_out是炮彈射出位置,Inf_ammunition是炮彈屬性。
?? 一顆炮彈打到船體上時,它能造成多少傷害是確定的。但是游戲中可以變化的因素很多,而炮又不是那么的準(zhǔn),可以指哪打哪,這就涉及到了概率的內(nèi)容,留到下期再講。