判定箱

来自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 — 漏洞状态为“已修复”。

导航[编辑 | 编辑源代码]

游戏内容[显示] [编辑]