Ceiling Hover/zh: Difference between revisions

From Minecraft Parkour Wiki
Content added Content deleted
(Created page with "天花板悬停是一个小故障,它使玩家在天花板和有弹性的方块(史莱姆,或自 1.12 起的床)之间“悬停”。 它可以通过跳到天花板下...")
No edit summary
 
(23 intermediate revisions by the same user not shown)
Line 1: Line 1:
<languages/>
<languages/>
[[File:Slime Hover Setup.png|thumb|在 1.8 中,这是唯一可用于执行天悬停的设置 (1.8125bc 下有史莱姆)]]
[[File:Slime Hover Setup.png|thumb|在 1.8 中,这是唯一能触发花板悬停的摆放(1.8125bc 下有史莱姆]]


<youtube>bijMuKlme7k</youtube>
<youtube>bijMuKlme7k</youtube>


天花板悬停是一个小故障,它使玩家在天花板和有弹性的方块(史莱姆,或 1.12 的床)之间“悬停”。 它可以通过跳到天花板下来执行,使得天花板下方块 2.001b 具有弹跳特性
天花板悬停是一个使玩家在天花板和有弹性的方块(史莱姆,或 1.12 及以上的床)之间“悬停”的故障
当跳跃,且天花板下方 2.001 格处的方块有弹性特性时会触发。




Line 11: Line 12:




<span id="Explanation"></span>
== 解释 ==
== 解释 ==


每当玩家与一个方块(地或天花板)垂直碰撞时,游戏将应用碰撞物理。
每当玩家在垂直方向上与一个方块(地或天花板)垂直碰撞时,游戏将应用碰撞物理。


对于几乎每个方块,这只是意味着将玩家的垂直速度设为 0。
对于几乎所有的方块来说,这代表将玩家的垂直速度设为 0。


<syntaxhighlight lang="java">
<syntaxhighlight lang="java">
/* in class Block */
/* Block 类中 */
public void onVerticalCollision(Entity entityIn)
public void onVerticalCollision(Entity entityIn)
{
{
Line 30: Line 32:


<syntaxhighlight lang="java">
<syntaxhighlight lang="java">
/* in class BlockSlime */
/* BlockSlime 类中 */
public void onVerticalCollision(Entity entityIn)
public void onVerticalCollision(Entity entityIn)
{
{
Line 41: Line 43:




* 如果玩家在潜行,它将被视为常规碰撞(垂直移动0)
* 玩家在潜行,则会被视为常规碰撞垂直速度被设为 0)
* 否则,它将检查玩家的速度是否为负,然后将其反转。
* 否则程序会检查玩家的速度是否为负,然后将其反转。






注意,如果玩家以某种方式以正速度移动(而不是潜行),则不会发生任何事情
需要注意,如果玩家以某种方式以正速度移动(且没有潜行),则什么都不会发生。


事实上,这个故障发生情况
导致此错误原因






当游戏检测到垂直碰撞时,它会考虑在玩家位置下0.2米的方块应用碰撞物理(就算是天花板碰撞……)
当游戏检测到垂直碰撞时,它会考虑在玩家位置下 0.2 米的方块应用碰撞物理(甚至碰到天花板也会如此……)




让我们回顾一下1.8125bc天花板悬停设置的步骤:
让我们回顾一下 1.8125bc 天花板悬停摆放的步骤


#在1.8125bc下跳跃会玩家下方0.2米的方块发生垂直碰撞(在地面)
#在 1.8125bc 下跳跃会将垂直碰撞应用于玩家下方 0.2 米的方块地面)。
#如果方块是黏液块,那么垂直速度不会设置为0,玩家仍然悬在天花板下。
#如果下方方块是黏液块,那么垂直速度不会设置为 0,玩家仍然悬在天花板下。
#重复步骤(2),直到玩家的垂直速度由于重力而变为负值。
#重复步骤(2),直到玩家的垂直速度由于重力而变为负值。




'''注意:'''这个小故障只会发生几Ticks,但通过跳跃提升持续时间会更长。天花板悬停可以随时通过潜行中断。
'''注意'''这个小故障只会发生几 Ticks,但可以通过跳跃提升延长持续时间。天花板悬停可以随时通过潜行中断。








<span id="Consequences"></span>
== 结 ==
== 结 ==


这个故障非常微不足道:它不会以任何方式破坏游戏,并且需要使用非常具体设置
这个故障影响极小:它不会以任何方式破坏游戏,并且需要非常精准摆放才能利用。

Latest revision as of 04:58, 16 August 2023

Other languages:
在 1.8 中,这是唯一能触发天花板悬停的摆放(1.8125bc 下方有史莱姆)

天花板悬停是一个能使玩家在天花板和有弹性的方块(史莱姆,或者 1.12 及以上的床)之间“悬停”的故障。 当跳跃,且天花板下方 2.001 格处的方块有弹性特性时会触发。




解释

每当玩家在垂直方向上与一个方块(地面或天花板)垂直碰撞时,游戏将应用碰撞物理。

对于几乎所有的方块来说,这代表将玩家的垂直速度设为 0。

/* 在 Block 类中 */
public void onVerticalCollision(Entity entityIn)
{
    entityIn.motionY = 0.0D;
}


但有一个例外:粘液块(和 1.12+ 中的床)。

/* 在 BlockSlime 类中 */
public void onVerticalCollision(Entity entityIn)
{
    if (entityIn.isSneaking())
        super.onVerticalCollision(entityIn);
    else if (entityIn.motionY < 0.0D)
        entityIn.motionY = -entityIn.motionY;
}


  • 若玩家在潜行,则会被视为常规碰撞(垂直速度被设为 0)
  • 否则程序会检查玩家的速度是否为负,然后将其反转。


需要注意,如果玩家以某种方式以正速度移动(且没有潜行),则什么都不会发生。

这就是导致此错误的原因。


当游戏检测到垂直碰撞时,它会考虑在玩家位置下 0.2 米的方块上应用碰撞物理(甚至碰到天花板也会如此……)


让我们回顾一下 1.8125bc 天花板悬停摆放的步骤:

  1. 在 1.8125bc 下跳跃会将垂直碰撞应用于玩家下方 0.2 米的方块(地面)。
  2. 如果下方方块是黏液块,那么垂直速度不会设置为 0,玩家仍然悬停在天花板下。
  3. 重复步骤(2),直到玩家的垂直速度由于重力而变为负值。


注意:这个小故障只会发生几 Ticks,但可以通过跳跃提升延长持续时间。天花板悬停可以随时通过潜行来中断。



结论

这个故障影响极小:它不会以任何方式破坏游戏,并且需要非常精准的摆放才能利用。