关于修正并改进xwj的MC实体运动公式—适用于MC中所有实体
Bio-Hazard
编辑于 2024年09月18日 20:29
收录于文集
共1篇

如有错漏之处请不吝指出~


视频版(详细教学)


先说结论

符号见“符号说明”一节。

1.

%5Cbegin%7Balign%7D%0Av_x(t)%20%26%3D%20v_%7Bx0%7D%20(1%20-%20f_h)%5Et%20%26%20%26%3D%20v_%7Bx0%7D%20%5Ccdot%200.98%5Et%2C%20%5Ctag%7B1%7D%20%5C%5C%0Av_y(t)%20%26%3D%20%5Cleft(%20v_%7By0%7D%20%2B%20g%20-%20%5Cfrac%7Bg%7D%7Bf_v%7D%20%5Cright)%20(1%20-%20f_v)%5Et%20-%20g%20%2B%20%5Cfrac%7Bg%7D%7Bf_v%7D%20%26%20%26%3D%20(v_%7By0%7D%20%2B%201.96)%20%5Ccdot%200.98%5Et%20-%201.96%2C%20%5Ctag%7B2%7D%20%5C%5C%0Av_z(t)%20%26%3D%20v_%7Bz0%7D%20(1%20-%20f_h)%5Et%20%26%20%26%3D%20v_%7Bz0%7D%20%5Ccdot%200.98%5Et%3B%20%5Ctag%7B3%7D%0A%5Cend%7Balign%7D

2.

%5Cbegin%7Balign%7D%0A%5CDelta%20x(t)%20%26%3D%20v_%7Bx0%7D%20%5Ccdot%20%5Cfrac%20%7B1%20-%20(1%20-%20f_h)%5Et%7D%20%7Bf_h%7D%20%26%20%26%3D%20v_%7Bx0%7D%20%5Ccdot%20%5Cfrac%20%7B1%20-%200.98%5Et%7D%20%7B0.02%7D%2C%20%5Ctag%7B4%7D%20%5C%5C%0A%5CDelta%20y(t)%20%26%3D%20%5Cleft(%20v_%7By0%7D%20%2B%20g%20-%20%5Cfrac%20g%20%7Bf_v%7D%20%5Cright)%20%5Cfrac%20%7B1%20-%20(1%20-%20f_v)%5Et%7D%20%7Bf_v%7D%20%2B%20%5Cfrac%20g%20%7Bf_v%7D%20%5Ccdot%20t%20%26%20%26%3D%20(v_%7By0%7D%20%2B%201.96)%20%5Cfrac%20%7B1%20-%200.98%5Et%7D%20%7B0.02%7D%20-%202t%2C%20%5Ctag%7B5%7D%20%5C%5C%0A%5CDelta%20z(t)%20%26%3D%20v_%7Bz0%7D%20%5Ccdot%20%5Cfrac%20%7B1%20-%20(1%20-%20f_h)%5Et%7D%20%7Bf_h%7D%20%26%20%26%3D%20v_%7Bz0%7D%20%5Ccdot%20%5Cfrac%20%7B1%20-%200.98%5Et%7D%20%7B0.02%7D%3B%20%5Ctag%7B6%7D%0A%5Cend%7Balign%7D

3.

%5Cbegin%7Balign%7D%0Av_%7Bx0%7D%20%26%3D%20%5Cfrac%7Bf_h%20%5CDelta%20x(t)%7D%20%7B1%20-%20(1%20-%20f_h)%5Et%7D%20%26%20%26%3D%20%5Cfrac%20%7B0.02%20%5CDelta%20x(t)%7D%20%7B1%20-%200.98%5Et%7D%2C%20%5Ctag%7B7%7D%20%5C%5C%0Av_%7By0%7D%20%26%3D%20%5Cfrac%20%7Bf_v%20%5CDelta%20y(t)%20-%20gt%7D%20%7B1%20-%20(1%20-%20f_v)%5Et%7D%20-%20g%20%2B%20%5Cfrac%20g%20%7Bf_v%7D%20%26%20%26%3D%20%5Cfrac%20%7B0.02%20%5CDelta%20y(t)%20%2B%200.04t%7D%20%7B1%20-%200.98%5E%7Bt-1%7D%7D%20-%201.96%2C%20%5Ctag%7B8%7D%20%5C%5C%0Av_%7Bz0%7D%20%26%3D%20%5Cfrac%7Bf_h%20%5CDelta%20z(t)%7D%20%7B1%20-%20(1%20-%20f_h)%5Et%7D%20%26%20%26%3D%20%5Cfrac%20%7B0.02%20%5CDelta%20z(t)%7D%20%7B1%20-%200.98%5Et%7D%3B%20%5Ctag%7B9%7D%0A%5Cend%7Balign%7D

4.

%5Cbegin%7Balign%7D%0A%5Cbegin%7Bsplit%7D%0A%5CDelta%20y(t)%20%26%3D%20%5Cfrac%20%7B%5Cdisplaystyle%20%5Cleft(%20v_%7By0%7D%20%2B%20g%20-%20%5Cfrac%20g%20%7Bf_v%7D%20%5Cright)%7D%20%7Bf_v%7D%20%5Cleft(%201%20-%20%5Cleft(%201%20-%20%5Cfrac%20%7Bf_h%20%5CDelta%20x(t)%7D%20%7Bv_%7Bx0%7D%7D%20%5Cright)%20%5E%20%7B%5Cfrac%20%7B%5Cscriptstyle%20%5Cln%20(1%20-%20f_v)%7D%20%7B%5Cscriptstyle%20%5Cln%20(1%20-%20f_h)%7D%7D%20%5Cright)%20%2B%20%5Cfrac%20g%20%7Bf_v%5Cln%20(1%20-%20f_h)%7D%20%5Cln%20%5Cleft(%201%20-%20%5Cfrac%20%7Bf_h%20%5CDelta%20x(t)%7D%20%7Bv_%7Bx0%7D%7D%20%5Cright)%20%5C%5C%0A%26%3D%20%5Cfrac%20%7Bv_%7By0%7D%20%2B%201.96%7D%20%7Bv_%7Bz0%7D%7D%20%5Ccdot%20%5CDelta%20x(t)%20-%20%5Cfrac%20%7B2%7D%20%7B%5Cln%200.98%7D%20%5Cln%20%5Cleft(%201%20-%20%5Cfrac%20%7B0.02%7D%20%7Bv_%7Bx0%7D%7D%20%5Ccdot%20%5CDelta%20x(t)%20%5Cright)%2C%0A%5Cend%7Bsplit%7D%20%5Ctag%7B10%7D%20%5C%5C%0A%5Cbegin%7Bsplit%7D%0A%5CDelta%20y(t)%20%26%3D%20%5Cfrac%20%7B%5Cdisplaystyle%20%5Cleft(%20v_%7By0%7D%20%2B%20g%20-%20%5Cfrac%20g%20%7Bf_v%7D%20%5Cright)%7D%20%7Bf_v%7D%20%5Cleft(%201%20-%20%5Cleft(%201%20-%20%5Cfrac%20%7Bf_h%20%5CDelta%20z(t)%7D%20%7Bv_%7Bz0%7D%7D%20%5Cright)%20%5E%20%7B%5Cfrac%20%7B%5Cscriptstyle%20%5Cln%20(1%20-%20f_v)%7D%20%7B%5Cscriptstyle%20%5Cln%20(1%20-%20f_h)%7D%7D%20%5Cright)%20%2B%20%5Cfrac%20g%20%7Bf_v%5Cln%20(1%20-%20f_h)%7D%20%5Cln%20%5Cleft(%201%20-%20%5Cfrac%20%7Bf_h%20%5CDelta%20z(t)%7D%20%7Bv_%7Bz0%7D%7D%20%5Cright)%20%5C%5C%0A%26%3D%20%5Cfrac%20%7Bv_%7By0%7D%20%2B%201.96%7D%20%7Bv_%7Bz0%7D%7D%20%5Ccdot%20%5CDelta%20z(t)%20-%20%5Cfrac%20%7B2%7D%20%7B%5Cln%200.98%7D%20%5Cln%20%5Cleft(%201%20-%20%5Cfrac%20%7B0.02%7D%20%7Bv_%7Bz0%7D%7D%20%5Ccdot%20%5CDelta%20z(t)%20%5Cright)%3B%0A%5Cend%7Bsplit%7D%20%5Ctag%7B11%7D%0A%5Cend%7Balign%7D

5.

%5Cbegin%7Balign%7D%0At%5E*%20%3D%20%5Cleft%20%5B%20%5Cfrac%20%7B%5Cdisplaystyle%20%5Cln%20%5Cleft(%20g%20-%20%5Cfrac%20g%20%7Bf_v%7D%20%5Cright)%20-%20%5Cln%20%5Cleft(%20v_%7By0%7D%20%2B%20g%20-%20%5Cfrac%20g%20%7Bf_v%7D%20%5Cright)%7D%20%7B%5Cln%20(1%20-%20f_v)%7D%20%5Cright%5D%20%3D%20%5Cleft%5B%20%5Cfrac%20%7B%5Cln%201.96%20-%20%5Cln%20(v_%7By0%7D%20%2B%201.96)%7D%20%7B%5Cln%200.98%7D%20%5Cright%5D.%20%5Ctag%7B12%7D%0A%5Cend%7Balign%7D


主要内容

本文给出 5 组公式,内容包括

1. 给定初始 Motion 标签值的下落的方块(falling block)在 t 游戏刻(game tick)时的 Motion 标签值;

  - 假设下落的方块在 0 游戏刻时被召唤(summon)。

2. 给定初始 Motion 标签值的下落的方块在 t 游戏刻时的位移;

  - 位移:实体(entity)当前坐标(pos)向量减实体被召唤的位置的坐标向量

3. 已知 t 游戏刻时下落的方块的位移,求初始 Motion 标签值;

4. 下落的方块的位移的 y 轴分量与 x / z 轴分量的关系;

5. 给定初始 Motion 标签的下落的方块达到 y 坐标最大值的时间。

本文仅讨论下落的方块在空气(air)中且不受阻挡时的运动状态,并且本文不讨论下落的方块落地变成方块(block)的情形。

本文不考虑浮点误差。


实体运动数据

Minecraft Wiki“实体”(entity)页面“运动”(motion of entities)章节的表格

根据 Minecraft Wiki“实体”(entity)页面“运动”(motion of entities)章节 [1] 的表格,我们获得下落的方块的竖直方向加速度值(acceleration)、竖直方向阻力值(drag (vertical))、以及水平方向阻力值(drag (horizonal))。


符号说明

%5Cmathbf%20v%20(t)%20%3D%20%5Cleft(%20v_x(t)%2C%20v_y(t)%2C%20v_z(t)%20%5Cright)表示下落的方块在 t 游戏刻时的 Motion 标签值;

%5Cmathbf%20v_0%20%3D%20(v_%7Bx0%7D%2C%20v_%7By0%7D%2C%20v_%7Bz0%7D)表示下落的方块被召唤时的 Motion 标签值;

%5CDelta%20%5Cmathbf%20x(t)%20%3D%20(%5CDelta%20x(t)%2C%20%5CDelta%20y(t)%2C%20%5CDelta%20z(t))表示下落的方块在 t 游戏刻时的位移;

- 下落的方块在t%5E*游戏刻时达到 y 坐标最大值;

- 下落的方块的竖直方向加速度值记为-g%20%3D%200.04%2C%20g%3D-0.04

- 下落的方块的竖直方向阻力值记为f_v%20%3D%200.02

- 下落的方块的水平方向阻力值记为f_h%20%3D%200.02


实体运动基础规律

对于下落的方块(以及其他“应用阻力”(applies drag)为“之后”(after)的实体),其 Motion 标签值满足如下基础规律:

%5Cbegin%7Balign%7D%0A%0A%5Cmathbf%20v(0)%20%26%3D%20%5Cmathbf%20v_0%2C%20%5Ctag%7B13%7D%20%5C%5C%0A%0Av_x(t)%20%26%3D%20(1%20-%20f_h)%20v_x(t-1)%2C%20%5Cquad%20%26t%20%5Cge%201%2C%20%5Ctag%7B14%7D%20%5C%5C%0A%0Av_y(t)%20%26%3D%20(1%20-%20f_v)%20(v_y(t-1)%20%2B%20g)%2C%20%5Cquad%20%26t%20%5Cge%201%2C%20%5Ctag%7B15%7D%20%5C%5C%0A%0Av_z(t)%20%26%3D%20(1%20-%20f_h)%20v_z(t-1)%2C%20%5Cquad%20%26t%20%5Cge%201%2C%20%5Ctag%7B16%7D%0A%0A%5Cend%7Balign%7D

其位移满足如下基础规律:

%5Cbegin%7Balign%7D%0A%0A%5CDelta%20%5Cmathbf%20x(0)%20%26%3D%20%5Cmathbf%200%2C%20%5Ctag%7B17%7D%20%5C%5C%0A%0A%5CDelta%20x(t)%20%26%3D%20%5CDelta%20x(t-1)%20%2B%20v_x(t-1)%2C%20%5Cquad%20%26t%20%5Cge%201%2C%20%5Ctag%7B18%7D%20%5C%5C%0A%0A%5CDelta%20y(t)%20%26%3D%20%5CDelta%20y(t-1)%20%2B%20v_y(t-1)%20%2B%20g%2C%20%5Cquad%20%26t%20%5Cge%201%2C%20%5Ctag%7B19%7D%20%5C%5C%0A%0A%5CDelta%20z(t)%20%26%3D%20%5CDelta%20z(t-1)%20%2B%20v_z(t-1)%2C%20%5Cquad%20%26t%20%5Cge%201.%20%5Ctag%7B20%7D%0A%0A%5Cend%7Balign%7D


公式推导过程

由于下落的方块在 x、z 轴上的运动情况仅仅是在 y 轴的情况中把加速度值替换为 0(不存在加速度),把竖直方向阻力值替换为水平方向阻力值,因此在接下来的计算中,只需重点计算 y 轴的情况。


1. t 游戏刻时的 Motion 标签值

对于 (15) 式,待定系数 ,

v_y(t)%20%2B%20%5Cmu%20%3D%20(1%20-%20f_v)%20(v_y(t-1)%20%2B%20%5Cmu)%2C

移项得

v_y(t)%20%3D%20(1%20-%20f_v)%20v_y(t-1)%20-%20f_v%20%5Cmu%2C

与 (15) 式比较,解得

%5Cmu%20%3D%20-%20%5Cfrac%20%7B(1%20-%20f_v)%20g%7D%20%7Bf_v%7D%2C

也就是说,

v_y(t)%20-%20%5Cfrac%20%7B(1%20-%20f_v)%20g%7D%20%7Bf_v%7D%20%3D%20(1%20-%20f_v)%20%5Cleft(%20v_y(t-1)%20-%20%5Cfrac%20%7B(1%20-%20f_v)%20g%7D%20%7Bf_v%7D%20%5Cright)%2C

(v_y(t)%20-%20(1%20-%20f_v)%20g%20%2F%20%7Bf_v%7D)构成以(1%20-%20f_v)为公比的等比数列,因此

v_y(t)%20-%20%5Cfrac%20%7B(1%20-%20f_v)%20g%7D%20%7Bf_v%7D%20%3D%20%5Cleft(%20v_y(0)%20-%20%5Cfrac%20%7B(1%20-%20f_v)%20g%7D%20%7Bf_v%7D%20%5Cright)(1%20-%20f_v)%5Et%2C

整理得到

%5Cbegin%7Balign%7D%0A%0Av_y(t)%20%3D%20%5Cleft(%20v_%7By0%7D%20%2B%20g%20-%20%5Cfrac%20g%20%7Bf_v%7D%20%5Cright)%20(1%20-%20f_v)%5Et%20-%20g%20%2B%20%5Cfrac%20g%20%7Bf_v%7D.%0A%5Ctag%7B21%7D%0A%5Cend%7Balign%7D

然后,把  替换成 0,把f_v替换成f_h,即可得到 x、z 轴的公式:

%5Cbegin%7Balign%7D%0A%0Av_x(t)%20%26%3D%20v_%7Bx0%7D%20(1%20-%20f_h)%5Et%2C%20%5Cnonumber%20%5C%5C%0A%0Av_z(t)%20%26%3D%20v_%7Bz0%7D%20(1%20-%20f_h)%5Et.%20%5Cnonumber%0A%0A%5Cend%7Balign%7D


2. t 游戏刻时的位移

对 (19) 式求和,然后把 (21) 式代入得到

%5Cbegin%7Bequation%7D%0A%0A%5Cbegin%7Bsplit%7D%0A%0A%5CDelta%20y(t)%20%26%3D%20%5CDelta%20y(t-1)%20%2B%20v_y(t-1)%20%2B%20g%20%5C%5C%0A%0A%26%3D%20%5CDelta%20y(0)%20%2B%20gt%20%2B%20%5Csum_%7Bn%3D0%7D%5E%7Bt-1%7D%20v_y(n)%20%5C%5C%0A%0A%26%3D%200%20%2B%20gt%20%2B%20%5Csum_%7Bn%3D0%7D%5E%7Bt-1%7D%20%5Cleft(%20%5Cleft(%20v_%7By0%7D%20%2B%20g%20-%20%5Cfrac%20g%20%7Bf_v%7D%20%5Cright)%20(1%20-%20f_v)%5En%20-%20g%20%2B%20%5Cfrac%20g%20%7Bf_v%7D%20%5Cright)%20%5C%5C%0A%0A%26%3D%20gt%20%2B%20%5Cleft(%20-g%20%2B%20%5Cfrac%20g%20%7Bf_v%7D%20%5Cright)%20t%20%2B%20%5Cleft(%20v_%7By0%7D%20%2B%20g%20-%20%5Cfrac%20g%20%7Bf_v%7D%20%5Cright)%20%5Csum_%7Bn%3D0%7D%5E%7Bt-1%7D%20(1%20-%20f_v)%5En%20%5C%5C%0A%0A%26%3D%20%5Cleft(%20v_%7By0%7D%20%2B%20g%20-%20%5Cfrac%20g%20%7Bf_v%7D%20%5Cright)%20%5Cfrac%20%7B1%20-%20(1%20-%20f_v)%5Et%7D%20%7Bf_v%7D%20%2B%20%5Cfrac%20g%20%7Bf_v%7D%20%5Ccdot%20t.%0A%0A%5Cend%7Bsplit%7D%0A%5Ctag%7B22%7D%0A%0A%5Cend%7Bequation%7D

然后,把 g 替换成 0,把f_v替换成f_h,即可得到 x、z 轴的公式:

%5Cbegin%7Balign%7D%0A%0A%5CDelta%20x(t)%20%26%3D%20v_%7Bx0%7D%20%5Ccdot%20%5Cfrac%20%7B1%20-%20(1%20-%20f_h)%5Et%7D%20%7Bf_h%7D%2C%20%5Ctag%7B23%7D%20%5C%5C%0A%0A%5CDelta%20z(t)%20%26%3D%20v_%7Bz0%7D%20%5Ccdot%20%5Cfrac%20%7B1%20-%20(1%20-%20f_h)%5Et%7D%20%7Bf_h%7D.%20%5Ctag%7B24%7D%20%0A%5Cend%7Balign%7D


3. 已知 t 游戏刻时的位移,求初始 Motion 标签值

在 (22) 式中求解v_%7By0%7D得到

v_%7By0%7D%20%3D%20%5Cfrac%20%7Bf_v%20%5CDelta%20y(t)%20-%20gt%7D%20%7B1%20-%20(1%20-%20f_v)%5Et%7D%20-%20g%20%2B%20%5Cfrac%20g%20%7Bf_v%7D%2C

x、z 轴上则是

%5Cbegin%7Balign%7D%0A%0Av_%7Bx0%7D%20%26%3D%20%5Cfrac%7Bf_h%20%5CDelta%20x(t)%7D%20%7B1%20-%20(1%20-%20f_h)%5Et%7D%2C%20%5Cnonumber%20%5C%5C%0A%0Av_%7Bz0%7D%20%26%3D%20%5Cfrac%7Bf_h%20%5CDelta%20z(t)%7D%20%7B1%20-%20(1%20-%20f_h)%5Et%7D.%20%5Cnonumber%0A%0A%5Cend%7Balign%7D


4. 位移的 y 轴分量与 x / z 轴分量的关系

下落的方块抛物轨迹

在 (23) 式中求解 t 得到

t%20%3D%20%5Cfrac%20%7B%5Cdisplaystyle%20%5Cln%20%5Cleft(%201%20-%20%5Cfrac%20%7Bf_h%20%5CDelta%20x(t)%7D%20%7Bv_%7Bx0%7D%7D%20%5Cright)%7D%20%7B%5Cln%20(1%20-%20f_h)%7D%2C

代入 (22) 式得

%5Cbegin%7Bequation%7D%0A%0A%5Cbegin%7Bsplit%7D%0A%0A%5CDelta%20y(t)%20%26%3D%20%5Cleft(%20v_%7By0%7D%20%2B%20g%20-%20%5Cfrac%20g%20%7Bf_v%7D%20%5Cright)%20%5Cfrac%20%7B1%20-%20(1%20-%20f_v)%5Et%7D%20%7Bf_v%7D%20%2B%20%5Cfrac%20g%20%7Bf_v%7D%20%5Ccdot%20t%20%5C%5C%0A%0A%26%3D%20%5Cfrac%20%7B%5Cdisplaystyle%20%5Cleft(%20v_%7By0%7D%20%2B%20g%20-%20%5Cfrac%20g%20%7Bf_v%7D%20%5Cright)%7D%20%7Bf_v%7D%20%5Cleft(%201%20-%20%5Cleft(%201%20-%20%5Cfrac%20%7Bf_h%20%5CDelta%20x(t)%7D%20%7Bv_%7Bx0%7D%7D%20%5Cright)%20%5E%20%7B%5Cfrac%20%7B%5Cscriptstyle%20%5Cln%20(1%20-%20f_v)%7D%20%7B%5Cscriptstyle%20%5Cln%20(1%20-%20f_h)%7D%7D%20%5Cright)%20%2B%20%5Cfrac%20g%20%7Bf_v%5Cln%20(1%20-%20f_h)%7D%20%5Cln%20%5Cleft(%201%20-%20%5Cfrac%20%7Bf_h%20%5CDelta%20x(t)%7D%20%7Bv_%7Bx0%7D%7D%20%5Cright)%2C%0A%0A%5Cend%7Bsplit%7D%20%5Cnonumber%0A%0A%5Cend%7Bequation%7D

同理,

%5Cbegin%7Bequation%7D%0A%0A%5Cbegin%7Bsplit%7D%0A%0A%5CDelta%20y(t)%20%26%3D%20%5Cfrac%20%7B%5Cdisplaystyle%20%5Cleft(%20v_%7By0%7D%20%2B%20g%20-%20%5Cfrac%20g%20%7Bf_v%7D%20%5Cright)%7D%20%7Bf_v%7D%20%5Cleft(%201%20-%20%5Cleft(%201%20-%20%5Cfrac%20%7Bf_h%20%5CDelta%20z(t)%7D%20%7Bv_%7Bz0%7D%7D%20%5Cright)%20%5E%20%7B%5Cfrac%20%7B%5Cscriptstyle%20%5Cln%20(1%20-%20f_v)%7D%20%7B%5Cscriptstyle%20%5Cln%20(1%20-%20f_h)%7D%7D%20%5Cright)%20%2B%20%5Cfrac%20g%20%7Bf_v%5Cln%20(1%20-%20f_h)%7D%20%5Cln%20%5Cleft(%201%20-%20%5Cfrac%20%7Bf_h%20%5CDelta%20z(t)%7D%20%7Bv_%7Bz0%7D%7D%20%5Cright).%0A%0A%5Cend%7Bsplit%7D%20%5Cnonumber%0A%0A%5Cend%7Bequation%7D


5. 达到 y 坐标最大值的时间

由 (22) 式,

%5Cbegin%7Bequation%7D%0A%0A%5Cbegin%7Bsplit%7D%0A%0A%5CDelta%20y(t)%20-%20%5CDelta%20y(t-1)%20%3D%26%20%5Cleft(%20%5Cleft(%20v_%7By0%7D%20%2B%20g%20-%20%5Cfrac%20g%20%7Bf_v%7D%20%5Cright)%20%5Cfrac%20%7B1%20-%20(1%20-%20f_v)%5Et%7D%20%7Bf_v%7D%20%2B%20%5Cfrac%20g%20%7Bf_v%7D%20%5Ccdot%20t%20%5Cright)%20%5C%5C%20%26%20-%20%5Cleft(%20%5Cleft(%20v_%7By0%7D%20%2B%20g%20-%20%5Cfrac%20g%20%7Bf_v%7D%20%5Cright)%20%5Cfrac%20%7B1%20-%20(1%20-%20f_v)%5E%7Bt-1%7D%7D%20%7Bf_v%7D%20%2B%20%5Cfrac%20g%20%7Bf_v%7D%20(t-1)%20%5Cright)%20%5C%5C%0A%0A%3D%26%20%5Cleft(%20v_%7By0%7D%20%2B%20g%20-%20%5Cfrac%20g%20%7Bf_v%7D%20%5Cright)%20(1%20-%20f_v)%5E%7Bt-1%7D%20%2B%20%5Cfrac%20g%20%7Bf_v%7D%2C%5Cquad%20t%20%5Cge%201.%0A%0A%5Cend%7Bsplit%7D%20%5Cnonumber%0A%0A%5Cend%7Bequation%7D

情形 1. 当v_%7By0%7D%20%5Cle%20-g时,

%5CDelta%20y(t)%20-%20%5CDelta%20y(t-1)%20%5Cle%200%2C%20%0A%0A%5Cquad%20%5Cforall%20t%20%5Cge%201%2C

此时

0%20%3D%20%5CDelta%20y(0)%20%5Cge%20%5CDelta%20y(1)%20%5Cge%20%5CDelta%20y(2)%20%5Cge%20%5Ccdots%20%2C

因此t%5E*%20%3D%200

情形 2. 当v_%7By0%7D%20%5Cgt%20-g时,%5CDelta%20y(t)%20-%20%5CDelta%20y(t-1)单调递减,%5CDelta%20y(t)取最大值当且仅当

%5CDelta%20y(t)%20-%20%5CDelta%20y(t-1)%20%5Cge%200

%5CDelta%20y(t%2B1)%20-%20%5CDelta%20y(t)%20%5Cle%200.

解不等式

%5Cbegin%7Bequation%7D%0A%0A%5Cbegin%7Bsplit%7D%0A%0A0%20%26%5Cle%20%5CDelta%20y(t)%20-%20%5CDelta%20y(t-1)%20%5C%5C%0A%0A%26%3D%20%5Cleft(%20v_%7By0%7D%20%2B%20g%20-%20%5Cfrac%20g%20%7Bf_v%7D%20%5Cright)%20(1%20-%20f_v)%5E%7Bt-1%7D%20%2B%20%5Cfrac%20g%20%7Bf_v%7D%2C%0A%0A%5Cend%7Bsplit%7D%20%5Cnonumber%0A%0A%5Cend%7Bequation%7D

解得

%5Cbegin%7Bequation%7D%0A%0A%5Cbegin%7Bsplit%7D%0A%0At%20%26%5Cle%20%5Cfrac%20%7B%5Cdisplaystyle%20%5Cln%20%5Cleft(%20-%5Cfrac%20g%20%7Bf_v%7D%20%5Cright)%20-%20%5Cln%20%5Cleft(%20v_%7By0%7D%20%2B%20g%20-%20%5Cfrac%20g%20%7Bf_v%7D%20%5Cright)%7D%20%7B%5Cln%20(1%20-%20f_v)%7D%20%2B%201%20%5C%5C%0A%0A%26%3D%20%5Cfrac%20%7B%5Cdisplaystyle%20%5Cln%20%5Cleft(%20g%20-%20%5Cfrac%20g%20%7Bf_v%7D%20%5Cright)%20-%20%5Cln%20%5Cleft(%20v_%7By0%7D%20%2B%20g%20-%20%5Cfrac%20g%20%7Bf_v%7D%20%5Cright)%7D%20%7B%5Cln%20(1%20-%20f_v)%7D%2C%0A%0A%5Cend%7Bsplit%7D%20%5Cnonumber%0A%0A%5Cend%7Bequation%7D

因此,

t%5E*%20%3D%20%5Cleft%20%5B%20%5Cfrac%20%7B%5Cdisplaystyle%20%5Cln%20%5Cleft(%20g%20-%20%5Cfrac%20g%20%7Bf_v%7D%20%5Cright)%20-%20%5Cln%20%5Cleft(%20v_%7By0%7D%20%2B%20g%20-%20%5Cfrac%20g%20%7Bf_v%7D%20%5Cright)%7D%20%7B%5Cln%20(1%20-%20f_v)%7D%20%5Cright%5D.


习题

1. 在 0.5 0.0 0.5 处召唤一个下落的方块,初始 Motion 标签值为 [1.0, 2.0, 3.0],假设该下落的方块在空气中运动且不受阻挡,求 8 游戏刻后该下落的方块的坐标。

2. 在 0.5 0.0 0.5 处召唤一个下落的方块,假设该下落的方块在空气中运动且不受阻挡,求初始 Motion 标签值,使得该下落的方块在 32 游戏刻后的坐标为 16.5 4.0 32.5。


习题解答

1. 在 (4)、(5)、(6) 式中令%5Cmathbf%20v_0%20%3D%20(v_%7Bx0%7D%2C%20v_%7By0%7D%2C%20v_%7Bz0%7D)%20%3D%20(1.0%2C%202.0%2C%203.0)以及 t = 8,计算得到%5CDelta%20%5Cmathbf%20x(8)%20%3D%20(%5CDelta%20x(8)%2C%20%5CDelta%20y(8)%2C%20%5CDelta%20z(8))%20%3D%20(7.461848870910726%2C%2013.54892152880647%2C%2022.385546612732174),最终坐标为 7.961848870910726 13.54892152880647 22.885546612732174。

2. 在 (7)、(8)、(9) 式中令 t = 32 以及%5CDelta%20%5Cmathbf%20x(32)%20%3D%20(%5CDelta%20x(32)%2C%20%5CDelta%20y(32)%2C%20%5CDelta%20z(32))%20%3D%20(16.0%2C%204.0%2C%2032.0),计算得到%5Cmathbf%20v_0%20%3D%20(v_%7Bx0%7D%2C%20v_%7By0%7D%2C%20v_%7Bz0%7D)%20%3D%20(0.6721039037035623%2C%200.8964415907401402%2C%201.3442078074071246),此即初始 Motion 标签值。


更新日志

- 2018-10-17 发布文章。本文原标题为《关于修正并改进xwj的MC实体运动公式—适用于MC中所有实体》

- 2024-09-16 更改文章结构,修改公式适用范围。


引用、致谢

1. Minecraft Wiki,https://minecraft.wiki/w/Entity#Motion_of_entities

- 感谢 ~xwj~​