判定箱

出自Minecraft Wiki
跳至導覽 跳至搜尋

判定箱(Hitbox)定義方塊實體的物理「邊界」(或其近似值),用於計算碰撞和選取。

和方塊模型不同的是,所有方塊和大部分實體的判定箱都是硬編碼的,無法透過資料包修改,只能透過Mod改變。

方塊[編輯 | 編輯原始碼]

輪廓箱[編輯 | 編輯原始碼]

輪廓箱(Outline Box)會在玩家看向指定方塊時顯示。當十字準星指向方塊時,會有黑框線描出該方塊的輪廓。

一個方塊的輪廓箱並不是固定的,在不同的方塊狀態下可能具有不同的輪廓箱。例如上半磚和下半磚屬於同一種方塊,但具有不同的輪廓箱。液體不具有輪廓箱。

碰撞箱[編輯 | 編輯原始碼]

碰撞箱(Collision Box)主要用於管理與實體間的碰撞。

並非所有方塊都具有碰撞箱。下列這些方塊沒有碰撞箱,實體可以自由穿過它們:

  • 熔岩(對於可以站立在對應液體上的生物,碰撞箱高度為12格)

具有碰撞箱的方塊其碰撞箱預設與輪廓箱形狀相同,但下列這些方塊碰撞箱與輪廓箱不同:

  • 竹子:碰撞箱寬度為316格,而非輪廓箱的616格或1016格。
  • 大懸葉草:只有上方的葉子部分有碰撞箱,下面的莖沒有碰撞箱。
  • 仙人掌:碰撞箱高度為1516格,而非輪廓箱的1格。
  • 堆肥箱:在Java版中碰撞箱始終與0層堆肥的輪廓箱相同。
  • 柵欄:碰撞箱高度為1.5格,而非輪廓箱的1格。
  • 柵欄門:關閉時碰撞箱高度為1.5格,而非輪廓箱的1格。開啟時無碰撞箱。
  • 蜂蜜塊:碰撞箱高度為1516格,寬度為1416格,而非輪廓箱的1格。
  • 講台:講台桌面的碰撞箱是一個長方體且不旋轉,而非輪廓箱那樣隨方塊方向旋轉而旋轉。
  • 移動中的活塞:碰撞箱與目前移動中的活塞移動程度有關。
  • 泥巴:碰撞箱高度為1416格,而非輪廓箱的1格。
  • 粉雪:對於超過2.5格下落高度的任何實體碰撞箱高度為0.9格,對於粉雪上方掉落的方塊和穿戴了皮革靴子的生物碰撞箱為完整方塊,其他條件下沒有碰撞箱。
  • 鷹架:如果實體從上方向下落,並且鷹架具有底部,則碰撞箱只包含底部的16×2×16區域;如果實體向下落且鷹架不具有底部,則沒有碰撞箱。其他條件下與放置在地面上的鷹架輪廓箱相同。
  • 伏聆嘯口:碰撞箱高度為816格,而非輪廓箱的1格。
  • :碰撞箱高度比輪廓箱低18格,單層雪無碰撞箱。
  • 靈魂砂:碰撞箱高度為1416格,而非輪廓箱的1格。
  • :碰撞箱高度為1.5格。
  • 牆上的懸掛式告示牌:只有上方的欄杆有碰撞箱。
常見碰撞箱不完整方塊高度列表
碰撞箱高度 方塊種類
小數形式 分數形式 像素形式
1.5 12 24 BlockSprite shulker-box.png:Minecraft中shulker-box的精靈圖完全開啟的界伏盒
柵欄
0.9375 1516 15 土徑耕地蜂蜜塊、附著在方塊側面的的頂部
仙人掌、未傾斜的大懸葉草
0.875 78 14 靈魂砂泥巴BlockSprite snow.png:Minecraft中snow的精靈圖8層
儲物箱終界箱陷阱儲物箱講台頂部、附著在方塊側面的砂輪的石頭部分、釀造台頂部、插上蠟燭的蛋糕的蠟燭部分
0.8125 1316 13 終界之眼終界傳送門框架、有終界之眼的終界傳送門框架的邊框部分、附著在方塊側面或底面的的鐘部分
up=false歌萊枝、傾斜的大懸葉草、附著在方塊側面的BlockSprite medium-amethyst-bud.png:Minecraft中medium-amethyst-bud的精靈圖BlockSprite large-amethyst-bud.png:Minecraft中large-amethyst-bud的精靈圖BlockSprite amethyst-cluster.png:Minecraft中amethyst-cluster的精靈圖中、大型紫水晶芽和紫水晶晶簇
0.75 34 12 附魔台BlockSprite snow.png:Minecraft中snow的精靈圖7層、附著在方塊底面的砂輪的石頭部分
可可豆BlockSprite mob-heads.png:Minecraft中mob-heads的精靈圖牆上的生物頭顱
0.6875 1116 11 海靈核心漏斗內部、附著在方塊側面的砂輪的腳上半部分
0.625 58 10 BlockSprite snow.png:Minecraft中snow的精靈圖6層
BlockSprite end-rod.png:Minecraft中end-rod的精靈圖BlockSprite lightning-rod.png:Minecraft中lightning-rod的精靈圖水平的終界燭避雷針、附著在方塊側面的砂輪的腳下半部分
0.59375 1932 12 BlockSprite chain.png:Minecraft中chain的精靈圖水平的鎖鏈
0.5625 916 9 切石機BlockSprite lantern.png:Minecraft中lantern的精靈圖BlockSprite soul-lantern.png:Minecraft中soul-lantern的精靈圖未懸掛的燈籠頂部、附著在方塊底面的砂輪的腳下半部分
0.5 12 8 BlockSprite slabs.png:Minecraft中slabs的精靈圖底部的半磚BlockSprite snow.png:Minecraft中snow的精靈圖5層
BlockSprite mob-heads.png:Minecraft中mob-heads的精靈圖地上的生物頭顱BlockSprite stairs.png:Minecraft中stairs的精靈圖階梯下半部分、蛋糕插上蠟燭的蛋糕的蛋糕部分、BlockSprite lantern.png:Minecraft中lantern的精靈圖BlockSprite soul-lantern.png:Minecraft中soul-lantern的精靈圖懸掛的燈籠下半部分、伏聆振測器校準伏聆振測器伏聆嘯口
0.4375 716 7 營火靈魂營火海龜蛋、4個海鞘BlockSprite lantern.png:Minecraft中lantern的精靈圖BlockSprite soul-lantern.png:Minecraft中soul-lantern的精靈圖未懸掛的燈籠下半部分、底部的紫水晶晶簇
0.375 38 6 日光感測器BlockSprite snow.png:Minecraft中snow的精靈圖4層、附著在方塊側面或底面的底部
花盆、1-3個海鞘蠟燭
0.3125 516 5 鐵砧底座內側、底部的大型紫水晶芽age為0的瓶子草
0.25 14 4 BlockSprite snow.png:Minecraft中snow的精靈圖3層
鐵砧底座外側、鍋釜內部、底部的中型紫水晶芽
0.1875 316 3 BlockSprite trapdoors.png:Minecraft中trapdoors的精靈圖底部的地板門、底部的小型紫水晶芽
0.125 18 2 紅石中繼器紅石比較器BlockSprite snow.png:Minecraft中snow的精靈圖2層、漂浮的鷹架底部
釀造台底座、講台底座、堆肥箱內部
0.09375 332 112 荷葉
0.0625 116 1 地毯覆地苔蘚蒼白覆地苔蘚

如果一個方塊的碰撞箱不能和一個與座標網格對齊的1×1×1的正方體完全重合,那麼無論碰撞箱大小如何,這個碰撞箱都被認為是不完整的,而這個方塊就是碰撞箱不完整方塊。絕大多數碰撞箱不完整的方塊都不是紅石導體,也不能使生物窒息。生物也不能自然生成在任何碰撞箱完整的方塊內部。

Java版中,大多數高度為0.375、0.625、0.75、0.875的方塊和方塊碰撞箱包含這幾個高度的平面的方塊在碰撞計算時內部會產生多個平面,可以讓實體在這些平面上停留而不是直接穿過方塊。這些平面並不是真正的方塊碰撞箱,而是計算過程中產生的錯誤計算面。[1]

互動箱[編輯 | 編輯原始碼]

上面:視線與鐵砧輪廓箱的某一個上表面碰撞,選擇方向為上方。下面:視線與堆肥箱輪廓箱的某一個水平表面碰撞,但由於堆肥箱有一個完整方塊大小的互動箱,且視線與互動箱上表面碰撞,所以最終選擇方向為上方。

互動箱(Interaction Box)用於處理選中方塊後的選擇方向。如果一個方塊可以被選中(由輪廓箱判定),並且視線與方塊的互動箱相交,那麼選擇方向不取決於輪廓箱與視線的碰撞面,而是取決於互動箱與視線的碰撞面。

絕大多數方塊的互動箱都不存在,選擇方向只取決於輪廓箱。只有下方這些方塊具有互動箱:

  • 鍋釜:鍋釜內的空間是互動箱。
  • 堆肥箱:堆肥箱的互動箱是整個方塊。
  • 漏斗:漏斗的互動箱與方塊狀態有關。當漏斗指向下方,互動箱為漏斗內部的空間;當漏斗指向某一個水平方向,互動箱位於對應漏斗方向上,覆蓋漏斗的指向部分。
  • 鷹架:鷹架的互動箱是整個方塊。

方塊支撐形狀[編輯 | 編輯原始碼]

漏斗的支撐面(藍色正方體上的各個面)

方塊支撐形狀(Block Support Shape)主要用於判斷一個方塊表面是否可以附著另一個依附型方塊。

方塊支撐形狀預設與碰撞箱相同,但下列方塊不同:

  • 懸掛式告示牌:方塊支撐形狀與輪廓箱相同。
  • 歌萊花:方塊支撐形狀在各個方向上都比輪廓箱小116格。
  • 柵欄門:開啟時方塊支撐形狀不存在,關閉時為碰撞箱下方縮減516格。
  • 樹葉:方塊支撐形狀不存在。
  • 泥巴:方塊支撐形狀為完整的方塊。
  • 界伏盒:關閉時方塊支撐形狀為完整的方塊,開啟時方塊支撐形狀向對應方向拉伸。
  • :方塊支撐形狀與輪廓箱相同。
  • 靈魂砂:方塊支撐形狀為完整的方塊。

方塊支撐形狀和一個與座標網格對齊的1×1×1正方體的某個面重合的所有面的併集就是這個方塊在某個方向上的支撐面

  • 如果某個方向上的支撐面是一個1×1的正方形,則這個面完整
  • 如果某個方向上的中心18×18的正方形都屬於支撐面,則這個面中心完整
  • 如果某個方向上的寬度為18的邊緣都屬於支撐面,則這個面邊緣完整
  • 如果一個方塊的所有支撐面都完整,則這個方塊是方塊支撐形狀完整的方塊,簡稱完整方塊,否則為不完整方塊

例如漏斗的上表面是不完整的,因為上表面中間缺失了34×34的區域,同時它的上表面中心不完整,但邊緣完整,而漏斗這個方塊是不完整方塊。

依附型方塊判斷支撐面的類型來決定它們是否能依附於要依附方塊的某個面上。直立的火把燈籠等方塊只能放置於上表面中心完整的方塊上;紅石比較器紅石中繼器鐵軌等方塊只能放置於上表面邊緣完整的方塊上;按鈕控制桿等方塊只能放置於完整的支撐面上。

絕大多數上表面不完整的方塊上方不能生成任何生物。

遮擋形狀[編輯 | 編輯原始碼]

遮擋形狀(Occlusion Shape)主要用於計算亮度和方塊的某一面是否可見。

遮擋形狀預設與輪廓箱相同,但下列方塊不同:

  • 柵欄:柵欄的遮擋形狀比輪廓箱高度更低、寬度更小,並且下方是空的。
  • 柵欄門:柵欄門的遮擋形狀取決於它是否連接到了其他的柵欄或牆上。如果沒有連接,遮擋形狀會更高;如果連接了其他的柵欄或牆,那麼遮擋形狀也會相應降低。
  • 講台:講台的遮擋形狀只包含下面的底座和支柱,上面的桌面不屬於遮擋形狀。
  • 鐘乳石:鐘乳石沒有遮擋形狀。
  • 粉雪:粉雪沒有遮擋形狀。
  • 伏聆嘯口:伏聆嘯口的遮擋形狀與碰撞箱相同。
  • 生物頭顱:生物頭顱沒有遮擋形狀。

如果一個方塊的遮擋形狀不能和一個與座標網格對齊的1×1×1的正方體完全重合,那麼無論遮擋形狀大小如何,這個遮擋形狀都被認為是不完整的,而這個方塊就是遮擋形狀不完整方塊。所有可以遮擋光線且遮擋形狀完整的方塊都是完全固體繪製方塊

與方塊支撐形狀類似,遮擋形狀也有對應遮擋面的屬性。它主要用於剔除方塊多餘的繪製面。如果一個方塊的某個繪製面被另一個方塊的遮擋面完全遮擋,那麼這個繪製面就不會繪製。

視覺遮擋形狀[編輯 | 編輯原始碼]

視覺遮擋形狀(Visual Shape)用於判斷視角能否透過方塊觀察到自身,確定第三人稱視角的最佳位置。

視覺遮擋形狀預設與碰撞箱相同,但下列這些方塊是例外:

  • 玻璃染色玻璃遮光玻璃:所有類型的玻璃都不存在視覺遮擋形狀。
  • 柵欄:柵欄的視覺遮擋形狀與輪廓箱相同。
  • 鐵柵欄:鐵柵欄沒有視覺遮擋形狀。
  • 泥巴:泥巴的視覺遮擋形狀是一個完整的方塊。
  • 粉雪:粉雪沒有視覺遮擋形狀。
  • :雪的視覺遮擋形狀與輪廓箱相同。
  • 靈魂砂:靈魂砂的視覺遮擋形狀是一個完整的方塊。

實體[編輯 | 編輯原始碼]

所有實體的判定箱都是一個以正方形為底的長方體,無視實體的實際形狀。比如,女巫的判定箱不包括頂部的帽子,而凋零怪的判定箱不包括兩側的頭。終界龍除本體外還有8個身體構件,所以終界龍本質上是多個實體的組合,它的判定箱也由這些子實體組合而成。

邊界箱[編輯 | 編輯原始碼]

Java版中,實體的邊界箱(Boundary Box)可以透過F3 + B除錯快捷方式查看。當玩家選中實體的邊界箱後才能與其互動。同時,實體的邊界箱也是它們的碰撞箱。

視平線[編輯 | 編輯原始碼]

視平線(Eye Level)具有紅色的輪廓,且只會出現在實體的判定箱中。視平線負責判定窒息和溺水傷害,當一個生物的視平線處於窒息方塊或水中時,該生物就會受到窒息傷害或因耗盡氧氣而溺水。當視平線位於熔岩中時,畫面也會產生不同的繪製效果。

歷史[編輯 | 編輯原始碼]

方塊[編輯 | 編輯原始碼]

碰撞箱[編輯 | 編輯原始碼]

此章節缺失以下資訊:指定要補充的資訊。

請協助補充相關內容的描述,討論頁可能有更多細節。

Java版
1.4.41.4.3現在有了自己的碰撞箱了,以前它的碰撞箱與柵欄是相同的。[2]
1.513w06a柵欄的碰撞箱已被更改,凹型的角落現在有了更貼近它們形狀的判定箱,而不是以前會產生隱形部分的凸型判定箱。
1.915w38a修復了大量有關於碰撞箱的錯誤。[3][4][5]
1.1317w47a的碰撞箱已被正確地做成凸形。[6]

輪廓與互動箱[編輯 | 編輯原始碼]

Java版pre-Classic
rd-132211被選中的方塊現在會顯示明暗閃爍的視覺效果。
Java版Classic
0.0.13a被選中的方塊現在會顯示輪廓箱。
0.24_SURVIVAL_TEST明暗閃爍的判定箱被移除,只留下輪廓箱。
?某些方塊(花、蘑菇、火把)的判定箱不再是完整的方塊,而是更貼近它們各自的大小。
Java版Infdev
Minecraft Infdev20100313在此版本以前,輪廓箱會隨著離世界原點越遠而越不精確。在所有受支援的硬體裝置中,輪廓箱的位置會不規律地微幅抖動,而某些顯示卡甚至會使輪廓箱呈現非長方體的扭曲形狀。
Java版
?階梯的缺角不再能夠被十字準星選中,然而它的輪廓箱仍然是完整的方塊。
?某些隨機不對齊的方塊如芒草,它們的判定箱現在也會跟著偏移以更完整地包含該方塊。
1.0.0Beta 1.9-pre2柵欄現在在xz平面上不再有完整一格方塊的判定箱,而是更貼近它們的視覺形狀。
1.112w01a柵欄門的判定箱也被更改,以更符合先前針對柵欄的更改。
1.513w06a修復了柵欄、柵欄門與牆在遠離世界原點時出現的判定箱扭曲問題。
1.915w38a蛋糕的輪廓箱現在永遠會出現在(0,0,0)的位置上,無論選中的蛋糕真正的位置在哪裡。這同時也造成了一個距離錯誤,詳見下方15w49a。
15w46a紅石線的判定箱現在只會根據線路的排列,而只覆蓋下方方塊的一部份。
15w49a在此版本以前,蛋糕與仙人掌的輪廓箱會在離世界原點極遠時變得異常拉伸與扭曲。
15w49b終界傳送門方塊的判定箱高度由原本的116格高改為34格高。
1.1116w35a蛋糕的判定箱再次顯示在正確的位置上了。[7]
1.1317w47a鐵砧漏斗的輪廓箱更符合其模型。
釀造台的中軸也計入判定箱。[8]
柵欄在直角方向的分支的輪廓箱現在是正確的L形、T形或十字形。[9]
仙人掌現在有一個正確的長方體輪廓箱。[10]
包含多個藤蔓的方塊輪廓箱最佳化。
玻璃片鐵柵欄在分支時有更明確的輪廓箱。
終界傳送門框架的輪廓箱現在可以正確地囊括終界之眼。
活塞荷葉的輪廓箱已被更改。
的碰撞箱已被正確地做成凹形。[11]
1.1418w48a現在的輪廓箱更符合其視覺形狀。
19w13a鍋釜的輪廓箱現在更符合模型,允許它下面的方塊被選取。[12]
1.1620w10a現在有一個輪廓箱(靈魂火亦如此),[13]使它更符合其他方塊。在此之前,火根本沒有輪廓箱,破壞它需要瞄準下面的方塊,這也允許它在創造模式時,不會被手持三叉戟的玩家破壞。這還阻止其方塊狀態在除錯畫面中讀取或透過除錯棒修改。
20w18a紅石線的輪廓箱現在更接近其視覺形狀。例如,紅石線在不同方向上的分支會導致其輪廓箱自身在所述方向上分支,[14]對應了柵欄、玻璃片、鐵柵欄和牆的行為。並且,如果攀升至一個方塊的側面,紅石粉的垂直部分現在也可以被選取。[15]
1.1720w49a鐘乳石的輪廓箱整體寬度縮減了18格。

實體[編輯 | 編輯原始碼]

邊界箱[編輯 | 編輯原始碼]

Java版
1.4.41.4.3現在可以透過F3 + B來查看實體的判定箱,此時判定箱為白色不透明的,且無法與實際輪廓相符。
1.7.21.7.1在視覺上對實體判定箱做調整,以使其變得更符合直覺。

參見[編輯 | 編輯原始碼]

參考[編輯 | 編輯原始碼]

  1. MC-153191
  2. MC-1332 — 錯誤狀態為「已修復」。
  3. MC-1635 — 錯誤狀態為「已修復」。
  4. MC-73302 — 錯誤狀態為「已修復」。
  5. MC-1720 — 錯誤狀態為「已修復」。
  6. MC-2666 — 錯誤狀態為「已修復」。
  7. MC-106300 — 錯誤狀態為「已修復」。
  8. MC-4504 — 錯誤狀態為「已修復」。
  9. MC-12000 — 錯誤狀態為「已修復」。
  10. MC-59610 — 錯誤狀態為「已修復」。
  11. MC-2666 — 錯誤狀態為「已修復」。
  12. MC-129205 — 錯誤狀態為「已修復」。
  13. MC-163655 — 錯誤狀態為「已修復」。
  14. MC-137336 — 錯誤狀態為「已修復」。
  15. MC-153508 — 錯誤狀態為「已修復」。

導覽[編輯 | 編輯原始碼]

遊戲內容[顯示] [編輯]