Collisions/zh: Difference between revisions
(Created page with "一个'''碰撞箱'''由一个或多个边界箱组成,边界箱是由最小和最大 X/Y/Z 坐标定义的简单长方体。") |
(Created page with "碰撞通常涉及一个实体和一个方块:方块和方块之间通常不会相互碰撞。") |
||
Line 10: | Line 10: | ||
一个'''碰撞箱'''由一个或多个边界箱组成,边界箱是由最小和最大 X/Y/Z 坐标定义的简单长方体。 |
一个'''碰撞箱'''由一个或多个边界箱组成,边界箱是由最小和最大 X/Y/Z 坐标定义的简单长方体。 |
||
碰撞通常涉及一个实体和一个方块:方块和方块之间通常不会相互碰撞。 |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
Collisions usually involve an Entity and a Block: entities and blocks typically don't collide among themselves. |
|||
</div> |
|||
* 玩家只有一个边界箱,尺寸为 '''0.6'''×'''1.8'''×'''0.6''' m<sup>3</sup>。它们的位置(如F3所示)位于底部中心 |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
* The player only has one bounding box, of dimensions '''0.6'''×'''1.8'''×'''0.6''' m<sup>3</sup>. Their position (as shown in F3) is located at the bottom center |
|||
</div> |
|||
* 方块有更复杂的碰撞箱(见[[Special:MyLanguage/Blocks|这个列表]])。 |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
* Blocks have more complicated collision boxes (see [[Special:MyLanguage/Blocks|this list]]). |
|||
</div> |
|||
注意:'''判定箱''''是玩家可以点击的(例如攻击实体、按下按钮、打开门)。它不一定与碰撞框重叠。 |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
Note: a "hitbox" is what the player can click on (e.g. attack an entity, press a button, open a door). It may or may not overlap with the collision box. |
|||
</div> |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
[[File:Collision box (player and block).png|frameless|720x720px]] |
[[File:Collision box (player and block).png|frameless|720x720px]] |
||
</div> |
|||
== 碰撞顺序 == |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
== Collision Order == |
|||
</div> |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
<div lang="en" dir="ltr" class="mw-content-ltr"> |
Revision as of 08:24, 14 November 2021
Minecraft 的碰撞物理非常简单:游戏没有光线追踪碰撞,而是简单地沿每个轴顺序移动玩家。
在此提醒,Minecraft的物理更新速度为每秒 20 ticks。玩家的移动和碰撞每Tick更新一次。
碰撞箱
一个碰撞箱由一个或多个边界箱组成,边界箱是由最小和最大 X/Y/Z 坐标定义的简单长方体。
碰撞通常涉及一个实体和一个方块:方块和方块之间通常不会相互碰撞。
- 玩家只有一个边界箱,尺寸为 0.6×1.8×0.6 m3。它们的位置(如F3所示)位于底部中心
- 方块有更复杂的碰撞箱(见这个列表)。
注意:判定箱'是玩家可以点击的(例如攻击实体、按下按钮、打开门)。它不一定与碰撞框重叠。
碰撞顺序
Every tick, after the player's velocity has been updated, the game does these steps to check collisions:
- Move the player along the Y axis. If a vertical collision is detected while moving downward, the player is now considered to be on ground.
- Move the player along the X axis.
- Move the player along the Z axis.
- If the player is on ground and collided with a wall, they are able to step over it if it's less than 0.6m tall.
- See Stepping for explanations and visuals.
- This mechanic is responsible for Blips and Jump-Cancel, and their glitched variants.
Vertical Collisions (Y)
Vertical movement is processed before horizontal movement. Due to this:
- The player is able to jump one tick after running off a block. In particular, this is why headhitter timing works.
- To land on a block, the player's bounding box must overlap its surface on the final tick of the jump.
When the player hits a floor or ceiling, their vertical speed is reset to 0.
Horizontal Collisions (X/Z)
Due to the X axis being processed before the Z axis, corner collisions don't behave the same depending on the direction.
This phenomenon is especially noticeable with more speed.
It's important to distinguish "X-facing" jumps from "Z-facing" ones:
- X-facing refers to jumps that point towards East/West. The corner is difficult to avoid, and the player may have to start jumping further back than expected.
- Z-facing refers to jumps that point towards North/South. The corner is easier to avoid, and in particular it's possible to do a hh-timing from the front.
The axis of a jump can be checked with F3.
Players tend to find Z-facing neos more intuitive, but X-facing neos can actually be more lenient:
- Z-facing neos are very similar to linear jumps (assuming optimal movement). To convert a neo, simply add 1.2 to its distance and increase its tier by one. For example, a triple neo is equivalent to a "4.2+0.25" (which cannot be built, but this sort of comparison is useful for analysis)
- X-facing neos don't have a linear equivalent. Compared to Z-facing neos, they are "shifted" by 1 tick (wall collision begins and ends 1 tick earlier). This shift reduces the momentum, but makes it more efficient as the player typically has more speed at the end of a jump than at the start.
Some jumps are only possible when facing one axis or the other (for example, a 2bm triple neo is only possible X-facing)
1.14+
In 1.14, the collision physics were updated. The collision order now depends on the player's velocity:
- If the player has more Z speed than X speed (in absolute value), the collision order is Y-X-Z.
- Otherwise, the collision order is Y-Z-X.
In most cases, all collisions now resemble X-facing. Some jumps which involve cutting corners may be very different compared to pre-1.14.