From Minecraft Parkour Wiki
在每一刻,遊戲會進行如下三個步驟:
- 將加速度加到玩家的速度中。
- 移動玩家(新的位置 = 原位置 + 速度)。
- 降低玩家的速度以模擬阻力。
我們將從介紹各種乘數開始,盡力使公式可讀性更強。
乘數
- 移動乘數(參見 45°斜跑)
- 效果乘數(參見狀態效果)
- 滑度乘數(參見滑度)
直線運動公式
這些簡化的公式只適用於直線運動(方向不變)。
儘管這個條件似乎很有限制性,但這些公式對分析常規的跳躍和助跑非常有用。
之後我們將通過引入角度來擴展這些公式。
定義:
- 是玩家的初始速度(正常 = 0)。
- 是玩家在第 刻的速度。
- 地面速度:
- 跳躍速度:
- 空中速度:
完整公式
讓我們引入兩個新變量:
- ,玩家的方向,以度為單位(由玩家按鍵與旋轉角度決定)
- ,玩家的朝向,以度為單位(僅由玩家旋轉角度決定)
實際上,角度並不那樣簡單,因為有效角的數量是有限的(參見朝向與角度)。
為了簡單起見,我們將忽略這一事實。
- 定義:
- 與 對應玩家的初始速度。
- 與 對應玩家在第刻的速度。
- 地面速度:
- 跳躍速度:
- 空中速度:
運動停止條件
如果玩家撞到牆壁,或者速度小到被認為可以忽略不計,那麼水平速度就會被設置為 0。
- 牆壁碰撞:
- 如果玩家撞到 X 軸朝向的牆壁,則助跑部分被取消, 僅保留加速度部分。
- 如果玩家撞到 Z 軸朝向的牆壁,則助跑部分被取消, 僅保留加速度部分。
- 在這兩種情況下,玩家都會停止疾跑。
- 可忽略速度閾值:
- 如果 ,助跑部分被取消,僅保留加速度部分。
- 如果 ,助跑部分被取消,僅保留加速度部分。
- 在 1.9+,閾值被調整到 0.003。
源代碼
[...]