碰撞
Minecraft 的碰撞过程非常简单:游戏中没有光线跟踪碰撞,玩家只是在每一轴上按顺序移动。
在此提醒,Minecraft 的物理更新速度为每秒 20 刻。每刻更新一次玩家的移动和碰撞。
碰撞箱
一个碰撞箱由一个或多个边界箱组成,边界箱是由最小和最大 X/Y/Z 坐标定义的简单长方体。
碰撞通常涉及一个实体和一个方块:方块和方块之间通常不会相互碰撞。
- 玩家只有一个边界箱,尺寸为 0.6×1.8×0.6 m3。其的位置(如F3所示)位于底部中心
- 方块有更复杂的碰撞箱(见此列表)。
注意:“判定箱”是玩家可以点击的(例如攻击实体、按下按钮、打开门)。它不一定与碰撞箱重叠。
碰撞顺序
每次更新玩家速度后,游戏将按照下列步骤检查碰撞:
- 沿 Y 轴移动玩家。如果在向下移动时检测到垂直碰撞,则玩家现在被认定在地面上。
- 沿 X 轴移动玩家。
- 沿 Z 轴移动玩家。
- 如果玩家在地面上撞到一堵墙并且墙的高度小于 0.6 米,他们可以跨过墙。
垂直碰撞(Y)
在水平移动之前处理垂直移动。因此:
- 玩家可以在跑出一个方块后的 1 刻跳跃。这就是延立的原理。
- 为了落在方块上,玩家的边界箱必须在跳跃的最后 1 刻必须超过方块。
当玩家撞到地板或天花板时,其垂直速度将会重置为 0。
水平碰撞(X/Z)
因为 X 轴是在 Z 轴之前处理的,所以与方块边角碰撞的效果因朝向而有所不同。
这一现象在高速状态下尤其明显。
区分“X”旋转跳和“Z”旋转跳十分重要:
- X 指的是指向东/西的跳跃。卡墙是难以避免的,因此玩家必须从离墙更远的地方起跳。
- Z 指的是指向北/南的跳跃。不容易卡墙,甚至可以贴墙延立。
可以通过 F3 查看面向的轴向。
玩家往往倾向于面向 Z 的旋转跳更容易,但面向 X 的旋转跳实际上距离更短:
- Z 轴向的旋转跳非常类似于直线跳跃(假设在最优移动下)。要将一个 Z 轴旋转跳转化为直线跳,只需将其距离增加 1.2,并将其 tier 增加 1。例如,一个三墙相当于一个“4.2+0.25”(无法建造出来,但这类比较对分析有益)。
- X 轴向的旋转跳没有等价的直线跳跃。与面向 Z 的旋转跳相比,它们“平移”了 1 刻(墙壁碰撞的开始和结束都提前了 1 刻)。这种转变会减少助跑,但却会让墙变得更短,因为玩家在跳跃结束时的速度通常比开始时更快。
某些跳跃只有在一个特定轴向才有可能通过(例如,2bm 三墙 仅在 X 轴上有解)。
1.14+
1.14 更新了碰撞物理。碰撞顺序现在取决于玩家的速度:
- 如果玩家的Z速度大于X速度(绝对值),碰撞顺序为 Y-X-Z。
- 否则,碰撞顺序为 Y-Z-X。
在大多数情况下,所有碰撞现在都类似于 X 轴向。一些需要经过方块边缘的跳跃可能与 1.14 之前的版本大不相同。