From Minecraft Parkour Wiki
由於算術幾何序列有明確的公式,我們可以建立非遞歸函數來計算簡單但有用的結果,例如在任一 tick 上玩家的高度,或者在初始速度與持續時間的基礎上計算跳躍的距離。
定義:
v
0
{\textstyle v_{0}}
是玩家的初始速度(跳躍之前,
t
0
{\displaystyle t_{0}}
時的速度)
t
{\textstyle t}
是計入的 ticks 數(例如:平地上 t=12,參見跳躍持續時間 )
J
{\textstyle J}
是「跳躍增益」(疾跑跳躍為 0.3274,斜疾跑跳躍為 0.291924,45°無疾跑跳躍為 1.0……)
M
{\textstyle M}
是跳躍後的移動乘數(45°斜疾跑為 1.3,正常疾跑為 1.274,無疾跑45°為 1.0……)
垂直運動(跳躍)[1.8]
跳躍後的垂直速度(
t
≥
6
{\displaystyle t\geq 6}
)
V
Y
(
t
)
=
4
×
0.98
t
−
5
−
3.92
{\textstyle {\textrm {V}}_{Y}(t)=4\times 0.98^{t-5}-3.92}
跳躍後的相對高度(
t
≥
6
{\displaystyle t\geq 6}
)
Failed to parse (syntax error): {\textstyle \textrm{Y}_{rel}(t) = \underset{\textrm{跳跃最高点}}{\underbrace{197.4 - 217 \times 0.98^5}} + 200 (0.98-0.98^{t-4}) - 3.92 (t-5)}
對於
t
<
6
{\textstyle t<6}
的情況,見下文。
垂直運動(跳躍)[1.9+]
跳躍後的垂直速度(
t
≥
1
{\displaystyle t\geq 1}
)
V
Y
(
t
)
=
0.42
×
0.98
t
−
1
+
4
×
0.98
t
−
3.92
{\textstyle {\textrm {V}}_{Y}(t)=0.42\times 0.98^{t-1}+4\times 0.98^{t}-3.92}
跳躍後的相對高度(
t
≥
0
{\displaystyle t\geq 0}
)
Y
r
e
l
(
t
)
=
217
×
(
1
−
0.98
t
)
−
3.92
t
{\textstyle {\textrm {Y}}_{rel}(t)=217\times (1-0.98^{t})-3.92t}
Horizontal Movement (instant jump)
假設玩家在跳躍前已經在空中。
疾跑跳躍後的水平速度(
t
≥
2
{\displaystyle t\geq 2}
)
V
H
(
v
0
,
t
)
=
0.02
M
0.09
+
0.6
×
0.91
t
×
(
v
0
+
J
0.91
−
0.02
M
0.6
×
0.91
×
0.09
)
{\textstyle {\textrm {V}}_{H}(v_{0},t)={\frac {0.02M}{0.09}}+0.6\times 0.91^{t}\times \left(v_{0}+{\frac {J}{0.91}}-{\frac {0.02M}{0.6\times 0.91\times 0.09}}\right)}
疾跑跳躍距離(
t
≥
2
{\displaystyle t\geq 2}
)
Dist
(
v
0
,
t
)
=
1.91
v
0
+
J
+
0.02
M
0.09
(
t
−
2
)
+
0.6
×
0.91
2
0.09
×
(
1
−
0.91
t
−
2
)
×
(
v
0
+
J
0.91
−
0.02
M
0.6
×
0.91
×
0.09
)
{\textstyle {\textrm {Dist}}(v_{0},t)=1.91v_{0}+J+{\frac {0.02M}{0.09}}(t-2)+{\frac {0.6\times 0.91^{2}}{0.09}}\times (1-0.91^{t-2})\times \left(v_{0}+{\frac {J}{0.91}}-{\frac {0.02M}{0.6\times 0.91\times 0.09}}\right)}
注意: 這些公式對於大多數
v
0
{\displaystyle v_{0}}
的值來說都是準確的,但是一些負值會在某個時間點觸發速度閾值並重置玩家速度,從而使這些公式不準確。
Horizontal Movement (delayed jump)
假設玩家在跳躍前已經落地(至少在落地後的 1 tick 起跳)
疾跑跳躍的水平速度(
t
≥
2
{\displaystyle t\geq 2}
)
V
H
∗
(
v
0
,
t
)
=
0.02
M
0.09
+
0.6
×
0.91
t
×
(
0.6
v
0
+
J
0.91
−
0.02
M
0.6
×
0.91
×
0.09
)
{\textstyle {\textrm {V}}_{H}^{*}(v_{0},t)={\frac {0.02M}{0.09}}+0.6\times 0.91^{t}\times \left(0.6v_{0}+{\frac {J}{0.91}}-{\frac {0.02M}{0.6\times 0.91\times 0.09}}\right)}
Sprintjump distance (
t
≥
2
{\displaystyle t\geq 2}
)
Dist
∗
(
v
0
,
t
)
=
1.546
v
0
+
J
+
0.02
M
0.09
(
t
−
2
)
+
0.6
×
0.91
2
0.09
×
(
1
−
0.91
t
−
2
)
×
(
0.6
v
0
+
J
0.91
−
0.02
M
0.6
×
0.91
×
0.09
)
{\textstyle {\textrm {Dist}}^{*}(v_{0},t)=1.546v_{0}+J+{\frac {0.02M}{0.09}}(t-2)+{\frac {0.6\times 0.91^{2}}{0.09}}\times (1-0.91^{t-2})\times \left(0.6v_{0}+{\frac {J}{0.91}}-{\frac {0.02M}{0.6\times 0.91\times 0.09}}\right)}
進階公式
在周期為
T
{\textstyle T}
的助跑上連續疾跑跳躍
n
{\displaystyle n}
次後的水平速度(
n
≥
0
{\displaystyle n\geq 0}
,
T
≥
2
{\displaystyle T\geq 2}
)。
V
H
n
(
v
0
,
T
,
n
)
=
(
0.6
×
0.91
T
)
n
v
0
+
(
0.6
×
0.91
T
−
1
J
+
0.02
M
1
−
0.91
T
−
1
0.09
)
1
−
(
0.6
×
0.91
T
)
n
1
−
0.6
×
0.91
T
{\textstyle {\textrm {V}}_{H}^{\,n}(v_{0},T,n)=\left(0.6\times 0.91^{T}\right)^{n}v_{0}+\left(0.6\times 0.91^{T-1}J+0.02M{\frac {1-0.91^{T-1}}{0.09}}\right){\frac {1-(0.6\times 0.91^{T})^{n}}{1-0.6\times 0.91^{T}}}}
If the first sprintjump is delayed, multiply
v
0
{\textstyle v_{0}}
by 0.6