判定箱(Hitbox)定义方块或实体的物理“边界”(或其近似值),用于计算碰撞和选取。
和方块模型不同的是,所有的判定箱都是硬编码的,不能通过数据包修改,只能通过Mod改变。
方块[]
轮廓箱[]
轮廓箱(Outline Box)会在玩家看向指定方块时显示。当十字准星指向方块时,会有黑框线描出该方块的轮廓。
轮廓箱对于一个方块并不是固定的,在不同的方块状态下可能具有不同的轮廓箱。例如上半台阶和下半台阶属于同一种方块,但具有不同的轮廓箱。液体不具有轮廓箱。
碰撞箱[]
碰撞箱(Collision Box)主要用于管理与实体间的碰撞。
并非所有方块都具有碰撞箱。下列这些方块没有碰撞箱,实体可以自由穿过它们:
具有碰撞箱的方块其碰撞箱默认与轮廓箱形状相同,但下列这些方块碰撞箱与轮廓箱不同:
- 竹子:碰撞箱宽度为3⁄16格,而非轮廓箱的6⁄16格或10⁄16格。
- 大型垂滴叶:只有上方的叶子部分有碰撞箱,下面的茎没有碰撞箱。
- 仙人掌:碰撞箱高度为15⁄16格,而非轮廓箱的1格。
- 堆肥桶:碰撞箱始终与0层堆肥的轮廓箱相同。
- 栅栏:碰撞箱高度为1.5格,而非轮廓箱的1格。
- 栅栏门:关闭时碰撞箱高度为1.5格,而非轮廓箱的1格。开启时无碰撞箱。
- 蜂蜜块:碰撞箱高度为15⁄16格,宽度为14⁄16格,而非轮廓箱的1格。
- 讲台:讲台桌面的碰撞箱是一个长方体且不旋转,而非轮廓箱那样随方块方向旋转而旋转。
- 移动的活塞:碰撞箱与当前移动的活塞移动程度有关。
- 泥巴:碰撞箱高度为14⁄16格,而非轮廓箱的1格。
- 细雪:对于超过2.5格下落高度的任何实体碰撞箱高度为0.9格,对于细雪上方下落的方块和穿戴了皮革靴子的生物碰撞箱为完整方块,其他条件下没有碰撞箱。
- 脚手架:如果实体从上方向下落,并且脚手架具有底部,则碰撞箱只包含底部的16×2×16区域;如果实体向下落且脚手架不具有底部,则没有碰撞箱。其他条件下与放置在地面上的脚手架轮廓箱相同。
- 幽匿尖啸体:碰撞箱高度为8⁄16格,而非轮廓箱的1格。
- 雪:碰撞箱高度比轮廓箱低1⁄8格,单层雪无碰撞箱。
- 灵魂沙:碰撞箱高度为14⁄16格,而非轮廓箱的1格。
- 墙:碰撞箱高度为1.5格。
- 墙上的悬挂式告示牌:只有上方的栏杆有碰撞箱。
碰撞箱高度 | 方块种类 | ||
---|---|---|---|
小数形式 | 分数形式 | 像素形式 | |
1.5 | 1 1⁄2 | 24 | 完全打开的潜影盒 |
栅栏、圆石墙 | |||
0.9375 | 15⁄16 | 15 | 草径、耕地、蜂蜜块 |
仙人掌 | |||
0.875 | 7⁄8 | 14 | 灵魂沙、8层雪 |
箱子、末影箱、陷阱箱、酿造台顶部 | |||
0.8125 | 13⁄16 | 13 | 无末影之眼的末地传送门框架 |
紫颂植株 | |||
0.75 | 3⁄4 | 12 | 附魔台、7层雪 |
可可豆植物、墙上的生物头颅 | |||
0.625 | 5⁄8 | 10 | 6层雪 |
漏斗内部、水平的末地烛 | |||
0.5625 | 9⁄16 | 9 | 床、切石机 |
0.5 | 1⁄2 | 8 | 底部的台阶、5层雪 |
地上的生物头颅、楼梯下半部分、蛋糕 | |||
0.375 | 3⁄8 | 6 | 阳光探测器、4层雪 |
花盆 | |||
0.3125 | 5⁄16 | 5 | 炼药锅内部 |
0.25 | 1⁄4 | 4 | 3层雪 |
铁砧底座 | |||
0.1875 | 3⁄16 | 3 | 底部的活板门 |
0.125 | 1⁄8 | 2 | 红石中继器、红石比较器、2层雪 |
酿造台底座 | |||
0.09375 | 3⁄32 | 11⁄2 | 睡莲 |
0.0625 | 1⁄16 | 1 | 单层雪、地毯 |
如果一个方块的碰撞箱不能和一个与坐标网格对齐的1×1×1的正方体完全重合,那么无论碰撞箱大小如何,这个碰撞箱都被认为是不完整的,而这个方块就是碰撞箱不完整方块。绝大多数碰撞箱不完整的方块都不是红石导体,也不能使生物窒息。生物也不能自然生成在任何碰撞箱完整的方块内部。
互动箱[]
互动箱(Interaction Box)用于处理选中方块后的选择方向。如果一个方块可以被选中(由轮廓箱判定),并且视线与方块的交互箱相交,那么选择方向不取决于轮廓箱与视线的碰撞面,而是取决于互动箱与视线的碰撞面。
绝大多数方块的互动箱都不存在,选择方向只取决于轮廓箱。只有下方这些方块具有互动箱:
- 炼药锅:炼药锅内的空间是互动箱。
- 堆肥桶:堆肥桶的互动箱是整个方块。
- 漏斗:漏斗的互动箱与方块状态有关。当漏斗指向下方,互动箱为漏斗内部的空间;当漏斗指向某一个水平方向,互动箱位于对应漏斗方向上,覆盖漏斗的指向部分。
- 脚手架:脚手架的互动箱是整个方块。
方块支撑形状[]
方块支撑形状(Block Support Shape)主要用于判断一个方块表面是否可以附着另一个依附型方块。
方块支撑形状默认与碰撞箱相同,但下列方块不同:
- 悬挂式告示牌:方块支撑形状与轮廓箱相同。
- 栅栏门:打开时方块支撑形状不存在,关闭时为碰撞箱下方缩减5⁄16格。
- 树叶:方块支撑形状不存在。
- 泥巴:方块支撑形状为完整的方块。
- 潜影盒:关闭时方块支撑形状为完整的方块,开启时方块支撑形状向对应方向拉伸。
- 雪:方块支撑形状与轮廓箱相同。
- 灵魂沙:方块支撑形状为完整的方块。
方块支撑形状和一个与坐标网格对齐的1×1×1正方体的某个面重合的所有面的并集就是这个方块在某个方向上的支撑面。
- 如果某个方向上的支撑面是一个1×1的正方形,则这个面完整。
- 如果某个方向上的中心1⁄8×1⁄8的正方形都属于支撑面,则这个面中心完整。
- 如果某个方向上的宽度为1⁄8的边缘都属于支撑面,则这个面边缘完整。
- 如果一个方块的所有支撑面都完整,则这个方块是方块支撑形状完整的方块,简称完整方块,否则为不完整方块。
例如漏斗的上表面是不完整的,因为上表面中间缺失了3⁄4×3⁄4的区域,同时它的上表面中心不完整,但边缘完整,而漏斗这个方块是不完整方块。
依附型方块判断支撑面的类型来决定它们是否能依附于要依附方块的某个面上。直立的火把、灯笼等方块只能放置于上表面中心完整的方块上;红石比较器、红石中继器、铁轨等方块只能放置于上表面边缘完整的方块上;门、拉杆等方块只能放置于上表面完整的方块上。
绝大多数上表面不完整的方块上方不能生成任何生物。
遮挡形状[]
遮挡形状(Occlusion Shape)主要用于计算亮度和方块的某一面是否可见。
遮挡形状默认与轮廓箱相同,但下列方块不同:
- 栅栏:栅栏的遮挡形状比轮廓箱高度更低、宽度更小,并且下方是空的。
- 栅栏门:栅栏门的遮挡形状取决于它是否连接到了其它的栅栏或墙上。如果没有连接,遮挡形状会更高;如果连接了其它的栅栏或墙,那么遮挡形状也会相应降低。
- 讲台:讲台的遮挡形状只包含下面的底座和支柱,上面的桌面不属于遮挡形状。
- 滴水石锥:滴水石锥没有遮挡形状。
- 细雪:细雪没有遮挡形状。
- 幽匿尖啸体:幽匿尖啸体的遮挡形状与碰撞箱相同。
- 生物头颅:生物头颅没有遮挡形状。
如果一个方块的遮挡形状不能和一个与坐标网格对齐的1×1×1的正方体完全重合,那么无论遮挡形状大小如何,这个遮挡形状都被认为是不完整的,而这个方块就是遮挡形状不完整方块。所有可以遮挡光线且遮挡形状完整的方块都是完全固体渲染方块。
与方块支撑形状类似,遮挡形状也有对应遮挡面的属性。它主要用于剔除方块多余的渲染面。如果一个方块的某个渲染面被另一个方块的遮挡面完全遮挡,那么这个渲染面就不会渲染。
视觉遮挡形状[]
视觉遮挡形状(Visual Shape)用于判断视角能否透过方块观察到自身,确定第三人称视角的最佳位置。
视觉遮挡形状默认与碰撞箱相同,但下列这些方块是例外:
- 玻璃、染色玻璃、遮光玻璃:所有类型的玻璃都不存在视觉遮挡形状。
- 栅栏:栅栏的视觉遮挡形状与轮廓箱相同。
- 铁栏杆:铁栏杆没有视觉遮挡形状。
- 泥巴:泥巴的视觉遮挡形状是一个完整的方块。
- 细雪:细雪没有视觉遮挡形状。
- 雪:雪的视觉遮挡形状与轮廓箱相同。
- 灵魂沙:灵魂沙的视觉遮挡形状是一个完整的方块。
实体[]
所有实体的判定箱都是以一个正方形为底的长方体,无视实体的实际形状。比如,女巫的判定箱不包括顶部的帽子,而凋灵的判定箱不包括两侧的头。末影龙除本体外还有8个身体构件,所以末影龙本质上是多个实体的组合,它的判定箱也由这些子实体组合而成。
边界箱[]
在Java版中,实体的边界箱(Boundary Box)可以通过F3 + B调试快捷方式查看。当玩家选中实体的边界箱后才能与其交互。同时,实体的边界箱也是它们的碰撞箱。
视平线[]
视平线(Eye Level)具有红色的轮廓,且只会出现在实体的判定箱中。视平线负责判定窒息和溺水伤害,当一个生物的视平线处于窒息方块或水中时,该生物就会受到窒息伤害或因耗尽氧气而溺水。当视平线位于水或熔岩中时,屏幕也会产生不同的渲染效果。
历史[]
方块[]
碰撞箱[]
Java版 | |||||
---|---|---|---|---|---|
1.4.4 | 1.4.3 | 墙现在有了自己的碰撞箱了,以前它的碰撞箱与栅栏是相同的。[1] | |||
1.5 | 13w06a | 栅栏的碰撞箱已被更改,凹型的角落现在有了更贴近它们形状的判定箱,而不是以前会产生隐形部分的凸型判定箱。 | |||
1.9 | 15w38a | 修复了大量有关于碰撞箱的漏洞。[2] | |||
1.13 | 17w47a | 墙的碰撞箱已被正确地做成凹形。[3] |
轮廓与互动箱[]
Java版pre-Classic | |||||
---|---|---|---|---|---|
rd-132211 | 被选中的方块现在会显示明暗闪烁的视觉效果。 | ||||
Java版Classic | |||||
0.0.13a | 被选中的方块现在会显示轮廓箱。 | ||||
0.24_SURVIVAL_TEST | 明暗闪烁的判定箱被移除,只留下轮廓箱。 | ||||
? | 某些方块(花、蘑菇、火把)的判定箱不再是完整的方块,而是更贴近它们各自的大小。 | ||||
Java版Infdev | |||||
Minecraft Infdev | 20100313 | 在此版本以前,轮廓箱会随着离世界原点越远而越不精确。在所有受支持的硬体设备中,轮廓箱的位置会不规律地微幅抖动,而某些显示卡甚至会使轮廓箱呈现非长方体的扭曲形状。 | |||
Java版 | |||||
? | 楼梯的缺角不再能够被十字准星选中,然而它的轮廓箱仍然是完整的方块。 | ||||
? | 某些随机不对齐的方块如高草丛,它们的判定箱现在也会跟着偏移以更完整地包含该方块。 | ||||
1.0.0 | Beta 1.9-pre2 | 栅栏现在在xz平面上不再有完整一格方块的判定箱,而是更贴近它们的视觉形状。 | |||
1.1 | 12w01a | 栅栏门的判定箱也被更改,以更符合先前针对栅栏的更改。 | |||
1.5 | 13w06a | 修复了栅栏、栅栏门与墙在远离世界原点时出现的判定箱扭曲问题。 | |||
1.9 | 15w38a | 蛋糕的轮廓箱现在永远会出现在(0,0,0)的位置上,无论选中的蛋糕真正的位置在哪里。这同时也造成了一个距离漏洞,详见下方15w49a。 | |||
15w46a | 红石线的判定箱现在只会根据线路的排列,而只覆盖下方方块的一部份。 | ||||
15w49a | 在此版本以前,蛋糕与仙人掌的轮廓箱会在离世界原点极远时变得异常拉伸与扭曲。 | ||||
15w49b | 末地传送门方块的判定箱高度由原本的1⁄16格高改为3⁄4格高。 | ||||
1.11 | 16w35a | 蛋糕的判定箱再次显示在正确的位置上了。[4] | |||
1.13 | 17w47a | 铁砧和漏斗的轮廓箱更符合其模型。 | |||
酿造台的中轴也计入判定箱。[5] | |||||
栅栏在直角方向的分支的轮廓箱现在是正确的L形、T形或十字形。[6] | |||||
仙人掌现在有一个正确的长方体轮廓箱。[7] | |||||
包含多个藤蔓的方块轮廓箱优化。 | |||||
玻璃板和铁栏杆在分支时有更明确的轮廓箱。 | |||||
末地传送门框架的轮廓箱现在可以正确地囊括末影之眼。 | |||||
活塞和睡莲的轮廓箱已被更改。 | |||||
墙的碰撞箱已被正确地做成凹形。[8] | |||||
1.14 | 18w48a | 现在床的轮廓箱更符合其视觉形状。 | |||
19w13a | 炼药锅的轮廓箱现在更符合模型,允许它下面的方块被选取。[9] | ||||
1.16 | 20w10a | 火现在有一个轮廓箱(灵魂火亦如此),[10]使它更符合其他方块。在此之前,火根本没有轮廓箱,破坏它需要瞄准下面的方块,这也允许它在创造模式时,不会被手持剑或三叉戟的玩家破坏。这还阻止其方块状态在调试屏幕中读取或通过调试棒修改。 | |||
20w18a | 红石线的轮廓箱现在更接近其视觉形状。例如,红石线在不同方向上的分支会导致其轮廓箱自身在所述方向上分支,[11]对应了栅栏、玻璃板、铁栏杆和墙的行为。并且,如果攀升至一个方块的侧面,红石粉的垂直部分现在也可以被选取。[12] | ||||
1.17 | 20w49a | 滴水石锥的轮廓箱整体宽度缩减了1⁄8格。 |
实体[]
边界箱[]
Java版 | |||||
---|---|---|---|---|---|
1.4.4 | 1.4.3 | 现在可以通过F3 + B来查看实体的判定箱,此时判定箱为白色不透明的,且无法与实际轮廓相符。 | |||
1.7.2 | 1.7.1 | 在视觉上对实体判定箱做调整,以使其变得更符合直觉。 |
参见[]
- 教程/利用碰撞箱
参考[]
语言