Collisions/zh: Difference between revisions
Content added Content deleted
(Created page with "在大多数情况下,所有碰撞现在都类似于 X 面。一些多次旋转的跳跃可能与 1.14 之前的版本大不相同。") |
No edit summary |
||
(26 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
<languages/> |
<languages/> |
||
Minecraft 的碰撞 |
Minecraft 的碰撞过程非常简单:游戏中没有光线跟踪碰撞,玩家只是在每一轴上按顺序移动。 |
||
在此提醒,Minecraft的物理更新速度为每秒 20 [[Special:MyLanguage/ticks| |
在此提醒,Minecraft 的物理更新速度为每秒 20 [[Special:MyLanguage/ticks|刻]]。每刻更新一次玩家的移动和碰撞。 |
||
<span id="Collision_Box"></span> |
|||
== 碰撞箱 == |
== 碰撞箱 == |
||
Line 12: | Line 13: | ||
碰撞通常涉及一个实体和一个方块:方块和方块之间通常不会相互碰撞。 |
碰撞通常涉及一个实体和一个方块:方块和方块之间通常不会相互碰撞。 |
||
* 玩家只有一个边界箱,尺寸为 '''0.6'''×'''1.8'''×'''0.6''' m<sup>3</sup>。 |
* 玩家只有一个边界箱,尺寸为 '''0.6'''×'''1.8'''×'''0.6''' m<sup>3</sup>。其的位置(如F3所示)位于底部中心 |
||
* 方块有更复杂的碰撞箱(见[[Special:MyLanguage/Blocks| |
* 方块有更复杂的碰撞箱(见[[Special:MyLanguage/Blocks|此列表]])。 |
||
注意 |
注意:“判定箱”是玩家可以点击的(例如攻击实体、按下按钮、打开门)。它不一定与碰撞箱重叠。 |
||
[[File:Collision box (player and block).png|frameless|720x720px]] |
[[File:Collision box (player and block).png|frameless|720x720px]] |
||
<span id="Collision_Order"></span> |
|||
== 碰撞顺序 == |
== 碰撞顺序 == |
||
每次更新玩家速度后,游戏 |
每次更新玩家速度后,游戏将按照下列步骤检查碰撞: |
||
* 沿 Y 轴移动玩家。如果在向下移动时检测到垂直碰撞,则玩家现在被认定在地面上。 |
* 沿 Y 轴移动玩家。如果在向下移动时检测到垂直碰撞,则玩家现在被认定在地面上。 |
||
* 沿 X 轴移动玩家。 |
* 沿 X 轴移动玩家。 |
||
* 沿 Z 轴移动玩家。 |
* 沿 Z 轴移动玩家。 |
||
* 如果玩家在地面上撞到一堵墙并且墙的高度小于0.6米,他们可以跨过墙。 |
* 如果玩家在地面上撞到一堵墙并且墙的高度小于 0.6 米,他们可以跨过墙。 |
||
** 参见[[Special:MyLanguage/Stepping|跨步]]获取解释和视觉效果。 |
** 参见[[Special:MyLanguage/Stepping|跨步]]获取解释和视觉效果。 |
||
** 该机制造成了[[Special:MyLanguage/Blip|卡角]]与[[Special:MyLanguage/Jump Cancel|跳跃取消]],以及它们的变体。 |
** 该机制造成了[[Special:MyLanguage/Blip|卡角]]与[[Special:MyLanguage/Jump Cancel|跳跃取消]],以及它们的变体。 |
||
Line 35: | Line 37: | ||
<span id="Vertical_Collisions_(Y)"></span> |
|||
== 垂直碰撞 |
== 垂直碰撞(Y) == |
||
在水平移动之前处理垂直移动。因此: |
在水平移动之前处理垂直移动。因此: |
||
* 玩家可以在跑 |
* 玩家可以在跑出一个方块后的 1 刻跳跃。这就是[[Special:MyLanguage/Timings|延立]]的原理。 |
||
* 为了 |
* 为了落在方块上,玩家的边界箱必须在跳跃的最后 1 刻必须超过方块。 |
||
[[File:Y Collision.png|frameless|720x720px]] |
[[File:Y Collision zh.png|frameless|720x720px]] |
||
当玩家撞到地板或天花板时, |
当玩家撞到地板或天花板时,其垂直速度将会重置为 0。 |
||
<span id="Horizontal_Collisions_(X/Z)"></span> |
|||
== 水平碰撞 |
== 水平碰撞(X/Z) == |
||
因为 X 轴是在 Z 轴之前处理的,所以与方块边角碰撞的效果因朝向而有所不同。 |
|||
这 |
这一现象在高速状态下尤其明显。 |
||
[[File:XZ collision.png|frameless| |
[[File:XZ collision zh.png|frameless|721x721px]] |
||
区分“X”旋转跳和“Z”旋转跳十分重要: |
区分“X”旋转跳和“Z”旋转跳十分重要: |
||
*'''X''' 指的是指向东/西的跳跃。 |
*'''X''' 指的是指向东/西的跳跃。卡墙是难以避免的,因此玩家必须从离墙更远的地方起跳。 |
||
*'''Z''' 指的是指向北/南的跳跃。不容易卡墙,甚至可以贴墙延立。 |
*'''Z''' 指的是指向北/南的跳跃。不容易卡墙,甚至可以贴墙延立。 |
||
可以通过 [[Special:MyLanguage/Debug Screen|F3]] 查看面向的轴向。 |
|||
玩家往往倾向于面向 Z 的旋转跳更容易,但面向 X 的旋转跳实际上距离更短: |
玩家往往倾向于面向 Z 的旋转跳更容易,但面向 X 的旋转跳实际上距离更短: |
||
* |
*Z 轴向的旋转跳非常类似于直线跳跃(假设在最优移动下)。要将一个 Z 轴旋转跳转化为直线跳,只需将其距离增加 1.2,并将其 [[Special:MyLanguage/Tiers|tier]] 增加 1。例如,一个三墙相当于一个“4.2+0.25”(无法建造出来,但这类比较对分析有益)。 |
||
* |
*X 轴向的旋转跳没有等价的直线跳跃。与面向 Z 的旋转跳相比,它们“平移”了 1 刻(墙壁碰撞的开始和结束都提前了 1 刻)。这种转变会减少助跑,但却会让墙变得更短,因为玩家在跳跃结束时的速度通常比开始时更快。 |
||
某些跳跃只有在 |
某些跳跃只有在一个特定轴向才有可能通过(例如,[https://youtu.be/apWPY4_-Qbg 2bm 三墙] 仅在 X 轴上有解)。 |
||
Line 77: | Line 81: | ||
== 1.14+== |
== 1.14+== |
||
1.14 更新了碰撞物理。碰撞顺序现在取决于玩家的速度: |
|||
*如果玩家的Z速度大于X速度(绝对值),碰撞顺序为'''Y-X-Z'''。 |
*如果玩家的Z速度大于X速度(绝对值),碰撞顺序为 '''Y-X-Z'''。 |
||
*否则,碰撞顺序为'''Y-Z-X'''。 |
*否则,碰撞顺序为 '''Y-Z-X'''。 |
||
在大多数情况下,所有碰撞现在都类似于 X |
在大多数情况下,所有碰撞现在都类似于 X 轴向。一些需要经过方块边缘的跳跃可能与 1.14 之前的版本大不相同。 |
Latest revision as of 04:51, 16 August 2023
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 之前的版本大不相同。