紅警2中被攻擊單位是否在射程范圍內(nèi)的判斷方法
射程同為5.5,為什么蘇軍礦車在某些位置可以白嫖地堡?
當(dāng)光棱坦克位于戰(zhàn)車工廠右上方12格(從戰(zhàn)車工廠的中心格子開始數(shù))時(shí),為什么可以打到戰(zhàn)車工廠,卻無(wú)法打到站在戰(zhàn)車工廠前面的步兵?
看完本文,你會(huì)得到答案。
本文默認(rèn)游戲中地形為平地,不討論以高打低等可能造成射程變化的情況。所有數(shù)據(jù)均通過嚴(yán)格實(shí)踐檢驗(yàn),可以確保精確到0.01格以內(nèi)的真理性。
第一節(jié)?步兵、車輛和建筑的位置
每個(gè)格子有3個(gè)可以容納步兵的點(diǎn),分別位于格子的左、下、右三個(gè)角落,與所臨兩邊的距離均為0.25格,即圖中的藍(lán)點(diǎn)。
每個(gè)格子有1個(gè)可以容納車輛的點(diǎn),位于格子的正中心,即圖中的紅點(diǎn)。

請(qǐng)注意,步兵和車輛是沒有體積的。若不考慮空降車輛、恐怖機(jī)器人殺死步兵、步兵進(jìn)運(yùn)輸船前瞬間停止移動(dòng)等特殊情況(這些情況下車輛可能位于步兵點(diǎn),步兵可能位于車輛點(diǎn)),步兵和車輛都嚴(yán)格位于某一個(gè)上述的點(diǎn)上。
建筑的計(jì)算位置為建筑所占矩形地面的幾何中心(當(dāng)船廠作為被攻擊對(duì)象時(shí),計(jì)算位置存在偏移,即本人上一篇文章中提到的“主瞄準(zhǔn)點(diǎn)”,以rules(md).ini中專門指定的位置為準(zhǔn),本文不討論)。即便建筑受到導(dǎo)彈攻擊,使用副受擊點(diǎn)結(jié)算傷害,計(jì)算射程時(shí)仍采用主瞄準(zhǔn)點(diǎn)。
第二節(jié)?步兵或車輛作為被攻擊單位時(shí)的計(jì)算
當(dāng)步兵或車輛作為被攻擊單位時(shí)(即步兵打步兵、車輛打步兵、建筑打步兵、步兵打車輛、車輛打車輛、建筑打車輛),只需簡(jiǎn)單地使用勾股定理即可算出兩個(gè)單位之間的距離,可直接用于判斷是否在射程范圍內(nèi)。
第三節(jié)?建筑作為被攻擊單位時(shí)的計(jì)算
當(dāng)建筑作為被攻擊單位時(shí)(即步兵打建筑、車輛打建筑、建筑打建筑),需要把攻擊分為弧線攻擊和非弧線攻擊分別討論。
弧線攻擊:如主戰(zhàn)坦克、巨炮、驅(qū)逐艦等。這類攻擊的[Projectile]中有“Arcing=true”代碼。
非弧線攻擊:如光棱坦克、幻影坦克,基礎(chǔ)步兵、磁爆線圈、自爆類武器和用于釋放子單位的武器(ASWLauncher、HornetLauncher、V3Launcher、DredLauncher、CruiseLauncher)等。這類攻擊的[Projectile]中沒有“Arcing=true”代碼。
當(dāng)攻擊為弧線攻擊時(shí),計(jì)算方法與非建筑作為被攻擊單位時(shí)相同(見第二節(jié))。
當(dāng)攻擊為非弧線攻擊時(shí),攻擊單位可以獲得一定量的射程增益,增益=0.25*(建筑的長(zhǎng)+建筑的寬)。
例如:占地4*4的建造廠,增益為2;占地5*3的戰(zhàn)車工廠,增益為2;占地4*3的礦石精煉廠,增益為1.75,占地3*2的盟軍兵營(yíng),增益為1.25,占地1*1的機(jī)槍碉堡,增益為0.5。
也就是說,對(duì)于某個(gè)射程為5的非弧線攻擊:在攻擊建造廠時(shí),射程為7(攻擊單位的位置與建造廠中心的距離≤7即可發(fā)動(dòng)攻擊);在攻擊礦石精煉廠時(shí),射程為6.75;在攻擊機(jī)槍碉堡時(shí),射程為5.5。
或者可以換個(gè)角度來理解:以建造廠中心為圓心,畫一個(gè)半徑為2的圓,只要能打到這個(gè)圓內(nèi)的任何一個(gè)點(diǎn),非弧線攻擊就可以對(duì)建造廠發(fā)動(dòng)攻擊。
到此為止,開頭提出的兩個(gè)問題也就迎刃而解了。
蘇軍礦車在打地堡時(shí)射程從5.5變成了6。
以戰(zhàn)車工廠中心為圓心畫半徑為2的圓,可以看到光棱坦克剛好可以打中戰(zhàn)車工廠。而圓的一部分將超出戰(zhàn)車工廠的建筑范圍,這部分區(qū)域內(nèi)的兵就打不到了。
心靈控制器的控制范圍不適用本文所述的計(jì)算方法,如有發(fā)現(xiàn)其它特殊情況歡迎在評(píng)論區(qū)補(bǔ)充。