Jumping/ja: Difference between revisions
(Created page with "* 各ジャンプの高さが0.75b以上の場合、ジャンプキーを押し続けるのは最適ではない(結果: ブロックを積み上げる時は押し直しの方が速い)。 * Releasing jump resets the cooldown, making the player able to jump again on the next tick.") |
(Created page with "1.8以前はジャンプの最高点は'''1.249b'''。1.9で約0.003b上昇し、'''1.252b'''の高さまでジャンプできるようになった。") |
||
Line 30: | Line 30: | ||
== ジャンプの高さ == |
== ジャンプの高さ == |
||
1.8以前はジャンプの最高点は'''1.249b'''。1.9で約0.003b上昇し、'''1.252b'''の高さまでジャンプできるようになった。 |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
Prior to 1.9, the maximum jump height is '''1.249b'''. It is increased in 1.9+ by ~0.003b, making the player able to jump '''1.252b''' high. |
|||
</div> |
|||
平らな地面では、1ジャンプの長さは'''12[[Special:MyLanguage/ticks|tick]]'''(0.6秒)。 |
|||
<div lang="en" dir="ltr" class="mw-content-ltr"> |
|||
On flat ground, a jump lasts '''12 [[Special:MyLanguage/ticks|ticks]]''' (0.6s). |
|||
</div> |
|||
Revision as of 10:44, 8 May 2022
Jumping is an essential mechanic that is quite self-explanatory.
発動
ジャンプするには、その前のtickで地面に立っている必要がある。ブロック縁からでも1tick走って(例:ずらし)ジャンプできるのはこのためである。
ジャンプキーを押し続けていると、10tick(0.5秒)ごとに1回ジャンプできる。
- 各ジャンプの高さが0.75b以上の場合、ジャンプキーを押し続けるのは最適ではない(結果: ブロックを積み上げる時は押し直しの方が速い)。
- Releasing jump resets the cooldown, making the player able to jump again on the next tick.
When a jump is initiated, the player's vertical speed is set to 0.42. On every following tick, it is decreased by 0.08 (gravity), then multiplied by 0.98 (drag).
- When the player hits a ceiling, their vertical speed is set to 0 and they immediately start falling.
- When the player hits the ground, their vertical speed is set to 0 and the
onGround
flag is set as true.
Jumping in water or lava makes the player move upward.
ジャンプの高さ
1.8以前はジャンプの最高点は1.249b。1.9で約0.003b上昇し、1.252bの高さまでジャンプできるようになった。
平らな地面では、1ジャンプの長さは12tick(0.6秒)。
速度
When combined with Sprinting, jumping adds 0.2 units of acceleration towards the player's facing.
In air, the player accelerates less quickly (only 20% of the base acceleration value), but conserves more speed (91% every tick, instead of 54.6%).
Therefore, sprint-jumping is a very efficient way to build and conserve speed.
ソースコード
/* From EntityLivingBase.java, stripped of irrelevant code */
public void onLivingUpdate()
{
if (this.jumpTicks > 0)
--this.jumpTicks;
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
if (this.isJumping)
{
if (this.isInWater())
this.handleJumpWater(); //motionY += 0.04
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
else if (this.isInLava())
this.handleJumpLava(); //motionY += 0.04
</div>
else if (this.onGround && this.jumpTicks == 0)
{
this.jump();
this.jumpTicks = 10;
}
}
<div lang="en" dir="ltr" class="mw-content-ltr">
//releasing the jump key resets the 10 tick cooldown.
else
this.jumpTicks = 0;
}
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
/* From EntityLivingBase.java */
protected void jump()
{
this.motionY = 0.42; //Initial speed
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
//apply jump boost
if (this.isPotionActive(Potion.jump))
this.motionY += (this.getActivePotionEffect(Potion.jump).getAmplifier() + 1) * 0.1F;
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
//apply sprintjump boost
if (this.isSprinting())
{
float f = this.rotationYaw * 0.017453292F; //multiply by pi/180 to convert to radians
this.motionX -= MathHelper.sin(f) * 0.2F;
this.motionZ += MathHelper.cos(f) * 0.2F;
}
}