Ceiling Hover/zh: Difference between revisions
Content added Content deleted
No edit summary |
No edit summary |
||
Line 67: | Line 67: | ||
== 结 |
== 结论 == |
||
这个故障非常微不足道:它不会以任何方式破坏游戏,并且需要使用非常精准的设置 |
这个故障非常微不足道:它不会以任何方式破坏游戏,并且需要使用非常精准的设置 |
Revision as of 12:49, 26 August 2021
天花板懸停是一個能使玩家在天花板和有彈性的方塊(史萊姆,或者從 1.12 起的床)之間「懸停」的故障。它可以通過跳入天花板執行(跳躍取消),使天花板下方2.001b的方塊具有彈性。
解釋
每當玩家與一個方塊(地板或天花板)垂直碰撞時,遊戲將應用碰撞物理。
對於幾乎所有的方塊來說,這意味着將垂直速度設為0。
/* in class Block */
public void onVerticalCollision(Entity entityIn)
{
entityIn.motionY = 0.0D;
}
但有一個例外:粘液塊(和 1.12+ 中的床)。
/* in class 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.8125bc下跳躍會與玩家下方0.2米的方塊發生垂直碰撞(在地面)
- 如果下方方塊是黏液塊,那麼垂直速度不會設置為0,玩家仍然懸停在天花板下。
- 重複步驟(2),直到玩家的垂直速度由於重力而變為負值。
注意:這個小故障只會發生幾Ticks,但是通過跳躍提升,持續的時間會更長。天花板懸停可以隨時通過潛行中斷。
結論
這個故障非常微不足道:它不會以任何方式破壞遊戲,並且需要使用非常精準的設置