對(duì)方舟阻擋機(jī)制的完整解釋
本文將詳細(xì)解釋明日方舟與阻擋相關(guān)的機(jī)制。

阻擋半徑
眾所周知,在明日方舟中,干員的受擊判定區(qū)域是一個(gè)半徑0.25的圓,而敵人的受擊判定區(qū)域是一個(gè)半徑0.1的圓,物理碰撞箱是一個(gè)寬0.2高0.4向下偏移0.1的膠囊型碰撞箱。但是,這些和阻擋機(jī)制,都沒(méi)有任何關(guān)系。
阻擋機(jī)制使用的是一個(gè)被稱作阻擋半徑的東西,這個(gè)東西只存在于角色類(lèi)單位(包括干員,召喚物,關(guān)卡裝置等)身上。
對(duì)于所有的干員和召喚物,阻擋半徑都是0.7071,也就是0.5√2,一個(gè)邊長(zhǎng)為1的正方形的對(duì)角線的一半。部分裝置可能會(huì)有不同的阻擋半徑,具體的可以在prts.wiki上查到。
當(dāng)某個(gè)角色的中點(diǎn),和敵人的中點(diǎn),之間的距離小于等于這個(gè)角色的阻擋半徑時(shí),這個(gè)敵人就可以判定為被阻擋。

角色類(lèi)單位每3幀掃描阻擋半徑內(nèi)未被阻擋的敵人,判定一次是否可阻擋。同時(shí)有多個(gè)可被阻擋的敵人時(shí),優(yōu)先阻擋距離自身中心最近的敵人。

阻擋偏移
在部分情況下,阻擋會(huì)使被阻擋的敵人的位置產(chǎn)生偏移,這個(gè)現(xiàn)象非常容易在游戲中被觀察到。下面將詳細(xì)介紹阻擋偏移的規(guī)則。
阻擋偏移的產(chǎn)生需要一個(gè)前提條件:敵人B的中點(diǎn)與阻擋ta的單位A的中點(diǎn)不重合(距離>0.00001)。否則阻擋偏移不會(huì)產(chǎn)生(例如5-3開(kāi)局的術(shù)士)
只阻擋一個(gè)敵人時(shí),阻擋偏移的邏輯相當(dāng)簡(jiǎn)單:如果角色A到敵人B的向量AB長(zhǎng)度不足0.5,則延其方向?qū)㈤L(zhǎng)度延長(zhǎng)到0.5(即AC)。

阻擋多個(gè)敵人時(shí),阻擋偏移的邏輯會(huì)變得復(fù)雜。在執(zhí)行完長(zhǎng)度延長(zhǎng)操作后,所得到的向量記作AC。
若C點(diǎn)半徑0.1范圍內(nèi)存在其它已被A阻擋的敵人,則遍歷除C外所有已被A阻擋的敵人(記作Dn),對(duì)每個(gè)敵人,按以下邏輯記錄一個(gè)修正向量:

1. 若DnC長(zhǎng)度<0.1,則將ADn繞A點(diǎn)順時(shí)針旋轉(zhuǎn)90度,標(biāo)準(zhǔn)化(方向不變,長(zhǎng)度變?yōu)?)后,累加至修正向量中。

2. 若0.1<=DnC長(zhǎng)度<0.4,則取 (0.4-DnC長(zhǎng)度) * 50 * 標(biāo)準(zhǔn)化后的DnC,累加至修正向量中。

3. 若DnC長(zhǎng)度>=0.4,無(wú)事發(fā)生。
遍歷完所有敵人,得到累加的修正向量后,將修正向量的長(zhǎng)度改為0.2,并與向量AC相加,得到的向量記作AE。最后將AE的長(zhǎng)度設(shè)置為AC的長(zhǎng)度,得到向量AF。


F點(diǎn)即敵人B被阻擋后移動(dòng)到的位置,BF即俗稱的阻擋偏移。敵人B會(huì)在0.2s內(nèi)強(qiáng)制移動(dòng)到F點(diǎn)。
F點(diǎn)的位置會(huì)被記錄,作為敵人B的穩(wěn)定阻擋位置。A再阻擋其它敵人,進(jìn)行阻擋偏移的計(jì)算時(shí),獲取敵人B的位置會(huì)獲取為F(即上文中的Dn均為其它敵人的穩(wěn)定阻擋位置)
利用阻擋偏移,可以將免疫失衡的敵人入坑。例如這個(gè)視頻利用阻擋偏移實(shí)現(xiàn)了蔓德拉的入坑。(海沫入坑這種主要與移動(dòng)慣性相關(guān),和阻擋偏移關(guān)系不大)